Merge branch 'feature/admin-messages' of github.com:ONLYOFFICE/AppServer into feature/session-lifetime
# Conflicts: # packages/asc-web-common/store/AuthStore.js
This commit is contained in:
commit
d61612fdf5
@ -1,11 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.6" version="18.6" Modules="enterprise" RootPath="." Language="ru" Id="{2D2C7C0E-FA78-4158-A222-DA463E882AAC}">
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.6" version="18.7" Modules="enterprise" RootPath="." Language="ru" Id="{2D2C7C0E-FA78-4158-A222-DA463E882AAC}">
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="AI_CURRENT_YEAR" Value="2022" ValueLocId="-"/>
|
||||
<ROW Property="AI_PREDEF_LCONDS_PROPS" Value="AI_DETECTED_INTERNET_CONNECTION"/>
|
||||
<ROW Property="AI_PRODUCTNAME_ARP" Value="Apache Kafka"/>
|
||||
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
<ROW Property="ARPCOMMENTS" Value="Эта база данных установщика содержит логику и данные, необходимые для установки [|[ProductName]." ValueLocId="*"/>
|
||||
<ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
|
||||
<ROW Property="ARPNOREPAIR" Value="1"/>
|
||||
<ROW Property="ARPSYSTEMCOMPONENT" Value="1"/>
|
||||
<ROW Property="Manufacturer" Value="Apache"/>
|
||||
<ROW Property="ProductCode" Value="1049:{79F55836-69B9-46CE-B03D-7679D38C0AD4} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
@ -33,6 +37,8 @@
|
||||
<ROW Directory="tools_Dir" Directory_Parent="kafka_2.122.8.0_Dir" DefaultDir="tools"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="AI_CustomARPName" ComponentId="{0A28214B-8B18-41A6-8221-28805AFC74D8}" Directory_="APPDIR" Attributes="4" KeyPath="DisplayName" Options="1"/>
|
||||
<ROW Component="AI_DisableModify" ComponentId="{9AEFD4E1-809A-4BA7-8210-A26107288AD8}" Directory_="APPDIR" Attributes="4" KeyPath="NoModify" Options="1"/>
|
||||
<ROW Component="APPDIR" ComponentId="{65AA756C-1422-4BF9-9839-FC3C55E40801}" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Component="Apache" ComponentId="{AD0BEF35-DD7E-47D2-8E16-10F0066B56D7}" Directory_="kafkazookeeper_Dir" Attributes="0"/>
|
||||
<ROW Component="ProductInformation" ComponentId="{0A3116F5-AD20-4DBA-A42B-68B3CE9DB645}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
|
||||
@ -128,6 +134,7 @@
|
||||
<ROW Action="AI_DetectSoftware" Type="257" Source="SoftwareDetector.dll" Target="OnDetectSoftware"/>
|
||||
<ROW Action="AI_DpiContentScale" Type="1" Source="aicustact.dll" Target="DpiContentScale"/>
|
||||
<ROW Action="AI_EnableDebugLog" Type="321" Source="aicustact.dll" Target="EnableDebugLog"/>
|
||||
<ROW Action="AI_GetArpIconPath" Type="1" Source="aicustact.dll" Target="GetArpIconPath"/>
|
||||
<ROW Action="AI_InstallModeCheck" Type="1" Source="aicustact.dll" Target="UpdateInstallMode" WithoutSeq="true"/>
|
||||
<ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>
|
||||
<ROW Action="AI_ProcessFailActions" Type="1" Source="aicustact.dll" Target="ProcessFailActions" AdditionalSeq="AI_DATA_SETTER_1"/>
|
||||
@ -157,6 +164,8 @@
|
||||
<ROW Feature_="MainFeature" Component_="kafka.exe"/>
|
||||
<ROW Feature_="MainFeature" Component_="kafka.xml"/>
|
||||
<ROW Feature_="MainFeature" Component_="zookeeper.exe"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_CustomARPName"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_DisableModify"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
|
||||
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel <> 5)" Sequence="210"/>
|
||||
@ -171,7 +180,7 @@
|
||||
<ROW Action="AI_DATA_SETTER_1" Sequence="5847"/>
|
||||
<ROW Action="AI_TxtUpdaterInstall" Sequence="5101"/>
|
||||
<ROW Action="AI_DetectSoftware" Sequence="101"/>
|
||||
<ATTRIBUTE name="RegisterProduct" value="false"/>
|
||||
<ROW Action="AI_GetArpIconPath" Sequence="1401"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
@ -191,8 +200,36 @@
|
||||
<ROW Condition="VersionNT" Description="[ProductName] не может быть установлен на [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
|
||||
<ROW Registry="Comments" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Comments" Value="[ARPCOMMENTS]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Contact" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Contact" Value="[ARPCONTACT]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="CurrentVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion" Name="\"/>
|
||||
<ROW Registry="DisplayIcon" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayIcon" Value="[ARP_ICON_PATH]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DisplayName" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayName" Value="[AI_PRODUCTNAME_ARP]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DisplayVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayVersion" Value="[ProductVersion]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="EstimatedSize" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="EstimatedSize" Value="#[AI_ARP_SIZE]" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="HelpLink" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpLink" Value="[ARPHELPLINK]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="HelpTelephone" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpTelephone" Value="[ARPHELPTELEPHONE]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="InstallLocation" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="InstallLocation" Value="[APPDIR]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Manufacturer" Root="-1" Key="Software\[Manufacturer]" Name="\"/>
|
||||
<ROW Registry="Microsoft" Root="-1" Key="Software\Microsoft" Name="\"/>
|
||||
<ROW Registry="ModifyPath" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="ModifyPath" Value="[AI_UNINSTALLER] /i [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="NoModify" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="NoModify" Value="#1" Component_="AI_DisableModify" VirtualValue="#"/>
|
||||
<ROW Registry="NoRepair" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="NoRepair" Value="#1" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
|
||||
<ROW Registry="ProductName" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="\"/>
|
||||
<ROW Registry="ProductNameProductVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="\"/>
|
||||
<ROW Registry="Publisher" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Publisher" Value="[Manufacturer]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Readme" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Readme" Value="[ARPREADME]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Software" Root="-1" Key="Software" Name="\"/>
|
||||
<ROW Registry="URLInfoAbout" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="URLInfoAbout" Value="[ARPURLINFOABOUT]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="URLUpdateInfo" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="URLUpdateInfo" Value="[ARPURLUPDATEINFO]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Uninstall" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall" Name="\"/>
|
||||
<ROW Registry="UninstallPath" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="UninstallPath" Value="[AI_UNINSTALLER] /x [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="UninstallString" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="UninstallString" Value="[AI_UNINSTALLER] /x [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
|
||||
<ROW Registry="VersionMajor" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="VersionMajor" Value="#1" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="VersionMinor" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="VersionMinor" Value="#0" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="Windows" Root="-1" Key="Software\Microsoft\Windows" Name="\"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiServConfigComponent">
|
||||
<ROW MsiServiceConfig="Apache_Kafka" Name="[ServiceName_Apache_Kafka]" Event="1" ConfigType="3" Argument="1" Component_="kafka.exe"/>
|
||||
|
@ -1,10 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.6.1" version="18.6.1" Modules="enterprise" RootPath="." Language="ru" Id="{93F1E21E-F074-444A-9756-659088E0DA02}">
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.6.1" version="18.7" Modules="enterprise" RootPath="." Language="ru" Id="{93F1E21E-F074-444A-9756-659088E0DA02}">
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="AI_CURRENT_YEAR" Value="2022" ValueLocId="-"/>
|
||||
<ROW Property="AI_PRODUCTNAME_ARP" Value="Apache ZooKeeper"/>
|
||||
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
<ROW Property="ARPCOMMENTS" Value="Эта база данных установщика содержит логику и данные, необходимые для установки [|[ProductName]." ValueLocId="*"/>
|
||||
<ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
|
||||
<ROW Property="ARPNOREPAIR" Value="1"/>
|
||||
<ROW Property="ARPSYSTEMCOMPONENT" Value="1"/>
|
||||
<ROW Property="Manufacturer" Value="Apache"/>
|
||||
<ROW Property="ProductCode" Value="1049:{DA471CF9-78DC-4D13-AB18-87B4604538FA} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
@ -29,6 +33,8 @@
|
||||
<ROW Directory="kafkazookeeper_Dir" Directory_Parent="WindowsVolume" DefaultDir="Apache"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="AI_CustomARPName" ComponentId="{DA50695D-FCFD-46A6-90BD-50D219311605}" Directory_="APPDIR" Attributes="4" KeyPath="DisplayName" Options="1"/>
|
||||
<ROW Component="AI_DisableModify" ComponentId="{01A44BB2-4D9C-4BE1-A645-EDB8A011DC61}" Directory_="APPDIR" Attributes="4" KeyPath="NoModify" Options="1"/>
|
||||
<ROW Component="APPDIR" ComponentId="{7C252C97-43D5-4EE8-884E-1BF7D1A2D490}" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Component="ProductInformation" ComponentId="{0903BE7F-28BE-4981-B82B-2D9A86C43A63}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
|
||||
<ROW Component="zookeeper" ComponentId="{F2EFFE90-2C47-4BAF-9541-143E8ADF5B4B}" Directory_="apachezookeeper3.7.0bin_Dir" Attributes="0"/>
|
||||
@ -99,6 +105,7 @@
|
||||
<ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>
|
||||
<ROW Action="AI_DpiContentScale" Type="1" Source="aicustact.dll" Target="DpiContentScale"/>
|
||||
<ROW Action="AI_EnableDebugLog" Type="321" Source="aicustact.dll" Target="EnableDebugLog"/>
|
||||
<ROW Action="AI_GetArpIconPath" Type="1" Source="aicustact.dll" Target="GetArpIconPath"/>
|
||||
<ROW Action="AI_InstallModeCheck" Type="1" Source="aicustact.dll" Target="UpdateInstallMode" WithoutSeq="true"/>
|
||||
<ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH" Target="[AI_SETUPEXEPATH_ORIGINAL]"/>
|
||||
@ -116,6 +123,8 @@
|
||||
<ROW Feature_="MainFeature" Component_="APPDIR"/>
|
||||
<ROW Feature_="MainFeature" Component_="ProductInformation"/>
|
||||
<ROW Feature_="MainFeature" Component_="zookeeper"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_CustomARPName"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_DisableModify"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
|
||||
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel <> 5)" Sequence="210"/>
|
||||
@ -126,7 +135,7 @@
|
||||
<ROW Action="AI_EnableDebugLog" Sequence="51"/>
|
||||
<ROW Action="RemoveManufactorDir" Condition="( NOT Installed )" Sequence="6602"/>
|
||||
<ROW Action="AI_DATA_SETTER_2" Condition="( NOT Installed )" Sequence="6601"/>
|
||||
<ATTRIBUTE name="RegisterProduct" value="false"/>
|
||||
<ROW Action="AI_GetArpIconPath" Sequence="1401"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
@ -144,8 +153,36 @@
|
||||
<ROW Condition="VersionNT" Description="[ProductName] не может быть установлен на [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
|
||||
<ROW Registry="Comments" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Comments" Value="[ARPCOMMENTS]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Contact" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Contact" Value="[ARPCONTACT]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="CurrentVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion" Name="\"/>
|
||||
<ROW Registry="DisplayIcon" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayIcon" Value="[ARP_ICON_PATH]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DisplayName" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayName" Value="[AI_PRODUCTNAME_ARP]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DisplayVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayVersion" Value="[ProductVersion]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="EstimatedSize" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="EstimatedSize" Value="#[AI_ARP_SIZE]" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="HelpLink" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpLink" Value="[ARPHELPLINK]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="HelpTelephone" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpTelephone" Value="[ARPHELPTELEPHONE]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="InstallLocation" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="InstallLocation" Value="[APPDIR]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Manufacturer" Root="-1" Key="Software\[Manufacturer]" Name="\"/>
|
||||
<ROW Registry="Microsoft" Root="-1" Key="Software\Microsoft" Name="\"/>
|
||||
<ROW Registry="ModifyPath" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="ModifyPath" Value="[AI_UNINSTALLER] /i [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="NoModify" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="NoModify" Value="#1" Component_="AI_DisableModify" VirtualValue="#"/>
|
||||
<ROW Registry="NoRepair" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="NoRepair" Value="#1" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
|
||||
<ROW Registry="ProductName" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="\"/>
|
||||
<ROW Registry="ProductNameProductVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="\"/>
|
||||
<ROW Registry="Publisher" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Publisher" Value="[Manufacturer]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Readme" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="Readme" Value="[ARPREADME]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Software" Root="-1" Key="Software" Name="\"/>
|
||||
<ROW Registry="URLInfoAbout" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="URLInfoAbout" Value="[ARPURLINFOABOUT]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="URLUpdateInfo" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="URLUpdateInfo" Value="[ARPURLUPDATEINFO]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Uninstall" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall" Name="\"/>
|
||||
<ROW Registry="UninstallPath" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="UninstallPath" Value="[AI_UNINSTALLER] /x [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="UninstallString" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="UninstallString" Value="[AI_UNINSTALLER] /x [ProductCode] AI_UNINSTALLER_CTP=1" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
|
||||
<ROW Registry="VersionMajor" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="VersionMajor" Value="#1" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="VersionMinor" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="VersionMinor" Value="#0" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="Windows" Root="-1" Key="Software\Microsoft\Windows" Name="\"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiThemeComponent">
|
||||
<ATTRIBUTE name="UsedTheme" value="classic"/>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.4" version="18.7" Modules="enterprise" RootPath="." Language="ru" Id="{54B168F8-13C3-42BC-B783-24F5F6D98365}">
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="18.4" version="18.7" Modules="enterprise" RootPath="." Language="en" Id="{54B168F8-13C3-42BC-B783-24F5F6D98365}">
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="AI_CURRENT_YEAR" Value="2022" ValueLocId="-"/>
|
||||
<ROW Property="AI_FINDEXE_TITLE" Value="Выберите установочный пакет для [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
|
||||
<ROW Property="AI_FINDEXE_TITLE" Value="Select the installation package for [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
|
||||
<ROW Property="AI_PREDEF_LCONDS_PROPS" Value="AI_DETECTED_INTERNET_CONNECTION"/>
|
||||
<ROW Property="AI_PRODUCTNAME_ARP" Value="[|ProductName]"/>
|
||||
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
|
||||
@ -28,6 +28,10 @@
|
||||
<ROW Property="ELASTICSEARCH_SCHEME" Value="http" ValueLocId="-"/>
|
||||
<ROW Property="ENVIRONMENT" Value="test"/>
|
||||
<ROW Property="INSTALL_ROOT_FOLDER_NAME" Value="[|Manufacturer]"/>
|
||||
<ROW Property="KAFKA_HOST" Value="localhost"/>
|
||||
<ROW Property="KAFKA_MSG" Value="Unable to connect to remote Kafka server at "/>
|
||||
<ROW Property="KAFKA_PORT" Value="9092"/>
|
||||
<ROW Property="KAFKA_SCHEME" Value="http"/>
|
||||
<ROW Property="MSIFASTINSTALL" MultiBuildValue="DefaultBuild:3"/>
|
||||
<ROW Property="MYSQLODBCDRIVER" Value="MySQL ODBC 8.0 Unicode Driver"/>
|
||||
<ROW Property="Manufacturer" Value="Ascensio System SIA"/>
|
||||
@ -36,8 +40,8 @@
|
||||
<ROW Property="PACKAGE_NAME" Value="ONLYOFFICE_AppServer_Win-install.v[|ProductVersion]"/>
|
||||
<ROW Property="PASSWORD_PROP" Value="root"/>
|
||||
<ROW Property="PORT_PROP" Value="3306"/>
|
||||
<ROW Property="ProductCode" Value="1049:{3FABEB4A-D27F-4BA6-A40E-16BE47540727} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1049"/>
|
||||
<ROW Property="ProductCode" Value="1033:{3FABEB4A-D27F-4BA6-A40E-16BE47540727} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
<ROW Property="ProductName" Value="ONLYOFFICE AppServer [|ProductVersion]"/>
|
||||
<ROW Property="ProductVersion" Value="1.0.0" Type="32"/>
|
||||
<ROW Property="SERVER_PROP" Value="localhost"/>
|
||||
@ -74,6 +78,10 @@
|
||||
<ROW Property="WindowsTypeNT50Display" MultiBuildValue="DefaultBuild:Windows 2000" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT5X" MultiBuildValue="DefaultBuild:Windows XP/2003" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT5XDisplay" MultiBuildValue="DefaultBuild:Windows XP/2003" ValueLocId="-"/>
|
||||
<ROW Property="ZOOKEEPER_HOST" Value="localhost"/>
|
||||
<ROW Property="ZOOKEEPER_MSG" Value="Unable to connect to remote ZooKeeper server at "/>
|
||||
<ROW Property="ZOOKEEPER_PORT" Value="2181"/>
|
||||
<ROW Property="ZOOKEEPER_SCHEME" Value="http"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
|
||||
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>
|
||||
@ -176,11 +184,11 @@
|
||||
<ROW Action="AI_DetectSoftware" Sequence="151"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
||||
<ROW BuildKey="DefaultBuild" BuildName="ONLYOFFICE_EXE" BuildOrder="1" BuildType="0" PackageFolder="publish" PackageFileName="[|PACKAGE_NAME]" Languages="ru" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExeIconPath="Resources\icon.ico" ExtractionFolder="[AppDataFolder][|INSTALL_ROOT_FOLDER_NAME]\AppServer\install" ExtUI="true" UseLargeSchema="true" Unicode="true" ExeName="[|PACKAGE_NAME]" UACExecutionLevel="2"/>
|
||||
<ROW BuildKey="DefaultBuild" BuildName="ONLYOFFICE_EXE" BuildOrder="1" BuildType="0" PackageFolder="publish" PackageFileName="[|PACKAGE_NAME]" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExeIconPath="Resources\icon.ico" ExtractionFolder="[AppDataFolder][|INSTALL_ROOT_FOLDER_NAME]\AppServer\install" ExtUI="true" UseLargeSchema="true" Unicode="true" ExeName="[|PACKAGE_NAME]" UACExecutionLevel="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
||||
<ROW Path="<AI_DICTS>ui.ail"/>
|
||||
<ROW Path="<AI_DICTS>ui_ru.ail"/>
|
||||
<ROW Path="<AI_DICTS>ui_en.ail"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
|
||||
<ROW Fragment="CommonUI.aip" Path="<AI_FRAGS>CommonUI.aip"/>
|
||||
@ -213,22 +221,22 @@
|
||||
<ROW JsonProperty="migration" Parent="Root_1" Name="migration" Condition="1" Order="1" Flags="60"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiActionTextComponent">
|
||||
<ROW Action="AI_ConfigFailActions" Description="Настройка действия при сбое службы" DescriptionLocId="ActionText.Description.AI_ConfigFailActions" Template="Служба: [1]" TemplateLocId="ActionText.Template.AI_ConfigFailActions"/>
|
||||
<ROW Action="AI_DeleteLzma" Description="Удаление извлеченных файлов из архива" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_DeleteRLzma" Description="Удаление извлеченных файлов из архива" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractFiles" Description="Извлечение файлов из архива" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractLzma" Description="Извлечение файлов из архива" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_JsonCommit" Description="Фиксация JSON-файла конфигурации." DescriptionLocId="ActionText.Description.AI_JsonCommit" Template="Фиксация JSON-файла конфигурации." TemplateLocId="ActionText.Template.AI_JsonCommit"/>
|
||||
<ROW Action="AI_JsonConfig" Description="Выполнение файла конфигурации JSON" DescriptionLocId="ActionText.Description.AI_JsonConfig" Template="Настройка JSON-файла: "[1]"" TemplateLocId="ActionText.Template.AI_JsonConfig"/>
|
||||
<ROW Action="AI_JsonInstall" Description="Создание действий для настройки JSON-файлов" DescriptionLocId="ActionText.Description.AI_JsonInstall"/>
|
||||
<ROW Action="AI_JsonRemove" Description="Выполнение файла конфигурации JSON" DescriptionLocId="ActionText.Description.AI_JsonRemove" Template="Настройка JSON-файла: "[1]"" TemplateLocId="ActionText.Template.AI_JsonRemove"/>
|
||||
<ROW Action="AI_JsonRollback" Description="Откат файлов конфигурации JSON." DescriptionLocId="ActionText.Description.AI_JsonRollback" Template="Откат файлов конфигурации JSON." TemplateLocId="ActionText.Template.AI_JsonRollback"/>
|
||||
<ROW Action="AI_JsonUninstall" Description="Создание действий для настройки JSON-файлов" DescriptionLocId="ActionText.Description.AI_JsonUninstall"/>
|
||||
<ROW Action="AI_ProcessFailActions" Description="Создание действия для настройки действия при сбое службы" DescriptionLocId="ActionText.Description.AI_ProcessFailActions" Template="Служба: [1]" TemplateLocId="ActionText.Template.AI_ProcessFailActions"/>
|
||||
<ROW Action="AI_TxtUpdaterCommit" Description="Фиксация изменений текстового файла." DescriptionLocId="ActionText.Description.AI_TxtUpdaterCommit" Template="Фиксация изменений текстового файла." TemplateLocId="ActionText.Template.AI_TxtUpdaterCommit"/>
|
||||
<ROW Action="AI_TxtUpdaterConfig" Description="Выполнение обновления текстового файла" DescriptionLocId="ActionText.Description.AI_TxtUpdaterConfig" Template="Обновление текстового файла: "[1]"" TemplateLocId="ActionText.Template.AI_TxtUpdaterConfig"/>
|
||||
<ROW Action="AI_TxtUpdaterInstall" Description="Создание действий для настройки текстовых файлов обновлений" DescriptionLocId="ActionText.Description.AI_TxtUpdaterInstall"/>
|
||||
<ROW Action="AI_TxtUpdaterRollback" Description="Откат изменений текстового файла." DescriptionLocId="ActionText.Description.AI_TxtUpdaterRollback" Template="Откат изменений текстового файла." TemplateLocId="ActionText.Template.AI_TxtUpdaterRollback"/>
|
||||
<ROW Action="AI_ConfigFailActions" Description="Configure service failure actions" DescriptionLocId="ActionText.Description.AI_ConfigFailActions" Template="Service: [1]" TemplateLocId="ActionText.Template.AI_ConfigFailActions"/>
|
||||
<ROW Action="AI_DeleteLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_DeleteRLzma" Description="Deleting files extracted from archive" DescriptionLocId="ActionText.Description.AI_DeleteLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractFiles" Description="Extracting files from archive" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_ExtractLzma" Description="Extracting files from archive" DescriptionLocId="ActionText.Description.AI_ExtractLzma" TemplateLocId="-"/>
|
||||
<ROW Action="AI_JsonCommit" Description="Committing JSON file configurations." DescriptionLocId="ActionText.Description.AI_JsonCommit" Template="Committing JSON file configurations." TemplateLocId="ActionText.Template.AI_JsonCommit"/>
|
||||
<ROW Action="AI_JsonConfig" Description="Executing JSON file configurations" DescriptionLocId="ActionText.Description.AI_JsonConfig" Template="Configuring JSON file: "[1]"" TemplateLocId="ActionText.Template.AI_JsonConfig"/>
|
||||
<ROW Action="AI_JsonInstall" Description="Generating actions to configure JSON files" DescriptionLocId="ActionText.Description.AI_JsonInstall"/>
|
||||
<ROW Action="AI_JsonRemove" Description="Executing JSON file configurations" DescriptionLocId="ActionText.Description.AI_JsonRemove" Template="Configuring JSON file: "[1]"" TemplateLocId="ActionText.Template.AI_JsonRemove"/>
|
||||
<ROW Action="AI_JsonRollback" Description="Rolling back JSON file configurations." DescriptionLocId="ActionText.Description.AI_JsonRollback" Template="Rolling back JSON file configurations." TemplateLocId="ActionText.Template.AI_JsonRollback"/>
|
||||
<ROW Action="AI_JsonUninstall" Description="Generating actions to configure JSON files" DescriptionLocId="ActionText.Description.AI_JsonUninstall"/>
|
||||
<ROW Action="AI_ProcessFailActions" Description="Generating actions to configure service failure actions" DescriptionLocId="ActionText.Description.AI_ProcessFailActions" Template="Service: [1]" TemplateLocId="ActionText.Template.AI_ProcessFailActions"/>
|
||||
<ROW Action="AI_TxtUpdaterCommit" Description="Commit text file changes." DescriptionLocId="ActionText.Description.AI_TxtUpdaterCommit" Template="Commit text file changes." TemplateLocId="ActionText.Template.AI_TxtUpdaterCommit"/>
|
||||
<ROW Action="AI_TxtUpdaterConfig" Description="Executing text file updates" DescriptionLocId="ActionText.Description.AI_TxtUpdaterConfig" Template="Updating text file: "[1]"" TemplateLocId="ActionText.Template.AI_TxtUpdaterConfig"/>
|
||||
<ROW Action="AI_TxtUpdaterInstall" Description="Generating actions to configure text files updates" DescriptionLocId="ActionText.Description.AI_TxtUpdaterInstall"/>
|
||||
<ROW Action="AI_TxtUpdaterRollback" Description="Rolling back text file changes." DescriptionLocId="ActionText.Description.AI_TxtUpdaterRollback" Template="Rolling back text file changes." TemplateLocId="ActionText.Template.AI_TxtUpdaterRollback"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiAppSearchComponent">
|
||||
<ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_LM" Builds="DefaultBuild"/>
|
||||
@ -243,6 +251,7 @@
|
||||
<ROW Name="jsonCfg.dll" SourcePath="<AI_CUSTACTS>jsonCfg.dll"/>
|
||||
<ROW Name="lzmaextractor.dll" SourcePath="<AI_CUSTACTS>lzmaextractor.dll"/>
|
||||
<ROW Name="utils.vbs" SourcePath="utils.vbs"/>
|
||||
<ROW Name="Utils.CA.dll" SourcePath="Utils.CA.dll"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
|
||||
<ROW Dialog_="AdminInstallPointDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="600" TextLocId="-" MsiKey="AdminInstallPointDlg#Back" Options="1"/>
|
||||
@ -254,9 +263,9 @@
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Описание нового диалогового окна..." Order="700"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Настройка подключения Elasticsearch..." Order="700"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Новое диалоговое окно" TextStyle="[DlgTitleFont]" Order="900"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Elasticsearch настройки подключения" TextStyle="[DlgTitleFont]" Order="900"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="ProtocolLabel" Type="Text" X="25" Y="65" Width="67" Height="11" Attributes="65539" Text="Protocol" Order="1000"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="ServerLabel" Type="Text" X="25" Y="92" Width="67" Height="11" Attributes="65539" Text="Server:" Order="1100"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="PortLabel" Type="Text" X="25" Y="119" Width="67" Height="11" Attributes="65539" Text="Port:" Order="1200"/>
|
||||
@ -265,7 +274,23 @@
|
||||
<ROW Dialog_="ELKConnectionDlg" Control="PortEdit" Type="Edit" X="98" Y="116" Width="253" Height="18" Attributes="19" Property="ELASTICSEARCH_PORT" Text="{7}" Order="1500"/>
|
||||
<ROW Dialog_="ExitDialog" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="400" TextLocId="-" MsiKey="ExitDialog#Back" Options="1"/>
|
||||
<ROW Dialog_="FatalError" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="400" TextLocId="-" MsiKey="FatalError#Back" Options="1"/>
|
||||
<ROW Dialog_="FolderDlg" Control="FolderEdit" Type="PathEdit" X="18" Y="126" Width="252" Height="18" Attributes="7" Property="APPDIR" Help="|" Order="300" HelpLocId="Control.Help.FolderDlg#FolderEdit" MsiKey="FolderDlg#FolderEdit"/>
|
||||
<ROW Dialog_="FolderDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="800" TextLocId="-" MsiKey="FolderDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" Options="1"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" Options="1"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" Options="1"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Настройка подключения Kafka..." Order="700"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Kafka настройки подключения" TextStyle="[DlgTitleFont]" Order="900"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="ProtocolLabel" Type="Text" X="25" Y="65" Width="67" Height="11" Attributes="65539" Text="Protocol" Order="1000"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="ServerLabel" Type="Text" X="25" Y="92" Width="67" Height="11" Attributes="65539" Text="Server:" Order="1100"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="PortLabel" Type="Text" X="25" Y="119" Width="67" Height="11" Attributes="65539" Text="Port:" Order="1200"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="ProtocolEdit" Type="Edit" X="98" Y="61" Width="253" Height="18" Attributes="3" Property="KAFKA_SCHEME" Text="{5}" Order="1300"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="ServerEdit" Type="Edit" X="98" Y="89" Width="253" Height="18" Attributes="3" Property="KAFKA_HOST" Text="[ComputerName]" Order="1400"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control="PortEdit" Type="Edit" X="98" Y="116" Width="253" Height="18" Attributes="19" Property="KAFKA_PORT" Text="{7}" Order="1500"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="700" TextLocId="-" MsiKey="MaintenanceTypeDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="MaintenanceWelcomeDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="400" TextLocId="-" MsiKey="MaintenanceWelcomeDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="PatchWelcomeDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="400" TextLocId="-" MsiKey="PatchWelcomeDlg#Back" Options="1"/>
|
||||
@ -297,14 +322,29 @@
|
||||
<ROW Dialog_="VerifyRepairDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="600" TextLocId="-" MsiKey="VerifyRepairDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="400" TextLocId="-" MsiKey="WelcomeDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="WelcomePrereqDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="1" Text="[ButtonText_Back]" Order="300" TextLocId="-" MsiKey="WelcomePrereqDlg#Back" Options="1"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" Options="1"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" Options="1"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" Options="1"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Настройка подключения ZooKeeper..." Order="700"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="ZooKeeper настройки подключения" TextStyle="[DlgTitleFont]" Order="900"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="ProtocolLabel" Type="Text" X="25" Y="65" Width="67" Height="11" Attributes="65539" Text="Protocol" Order="1000"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="ServerLabel" Type="Text" X="25" Y="92" Width="67" Height="11" Attributes="65539" Text="Server:" Order="1100"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="PortLabel" Type="Text" X="25" Y="119" Width="67" Height="11" Attributes="65539" Text="Port:" Order="1200"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="ProtocolEdit" Type="Edit" X="98" Y="61" Width="253" Height="18" Attributes="3" Property="ZOOKEEPER_SCHEME" Text="{5}" Order="1300"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="ServerEdit" Type="Edit" X="98" Y="89" Width="253" Height="18" Attributes="3" Property="ZOOKEEPER_HOST" Text="[ComputerName]" Order="1400"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control="PortEdit" Type="Edit" X="98" Y="116" Width="253" Height="18" Attributes="19" Property="ZOOKEEPER_PORT" Text="{7}" Order="1500"/>
|
||||
<ATTRIBUTE name="DeletedRows" value="SQLConnectionDlg#OdbcResourceEdit@SQLConnectionDlg#OdbcResourceLabel@SQLConnectionDlg.aip"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="7"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="SQLConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="205"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="9"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="SQLConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="210"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="197"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" AND ELK_CONNECTION = 0 )" Ordering="203"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" )" Ordering="203"/>
|
||||
<ROW Dialog_="MaintenanceWelcomeDlg" Control_="Next" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="99"/>
|
||||
<ROW Dialog_="CustomizeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_MAINT" Ordering="101"/>
|
||||
<ROW Dialog_="CustomizeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="1"/>
|
||||
@ -325,40 +365,75 @@
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_PATCH" Ordering="199"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="PatchWelcomeDlg" Condition="AI_PATCH" Ordering="205"/>
|
||||
<ROW Dialog_="PrerequisitesDlg" Control_="Back" Event="NewDialog" Argument="WelcomePrereqDlg" Condition="AI_BOOTSTRAPPER" Ordering="1"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_5" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="4"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="TestSQLConnectionMsgBox" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="5"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_5" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="3"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="TestSQLConnectionMsgBox" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="4"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="SQLConnectionDlgDialogInitializer" Event="[PASSWORD_PROP]" Argument="{}" Condition="AI_INSTALL AND ( OLDPRODUCTS="" AND SQLConnectionDlg_Cond )" Ordering="4"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="SQLConnectionDlgDialogInitializer" Event="[AI_ButtonText_Next_Orig]" Argument="[ButtonText_Next]" Condition="AI_INSTALL AND ( OLDPRODUCTS="" AND SQLConnectionDlg_Cond )" Ordering="3"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="SQLConnectionDlgDialogInitializer" Event="[ButtonText_Next]" Argument="[[AI_CommitButton]]" Condition="AI_INSTALL AND ( OLDPRODUCTS="" AND SQLConnectionDlg_Cond )" Ordering="2"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="SQLConnectionDlgDialogInitializer" Event="[AI_Text_Next_Orig]" Argument="[Text_Next]" Condition="AI_INSTALL AND ( OLDPRODUCTS="" AND SQLConnectionDlg_Cond )" Ordering="1"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="SQLConnectionDlgDialogInitializer" Event="[Text_Next]" Argument="[Text_Install]" Condition="AI_INSTALL AND ( OLDPRODUCTS="" AND SQLConnectionDlg_Cond )" Ordering="0"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = 0 )" Ordering="7"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "False" )" Ordering="5"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="2"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="TestSqlConnection" Condition="AI_INSTALL" Ordering="1"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="SQLConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="4"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError="" AND ELK_CONNECTION = 1 )" Ordering="6"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="SQLConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" AND OLDPRODUCTS <> "" )" Ordering="10"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" AND OLDPRODUCTS <> "" )" Ordering="16"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="TestSqlConnection" Condition="AI_INSTALL" Ordering="201"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = 1 )" Ordering="207"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="TestSqlConnection" Condition="AI_INSTALL" Ordering="3"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" AND SqlConnectionError = "" AND ELK_CONNECTION = 1 )" Ordering="201"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" )" Ordering="214"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="DoAction" Argument="TestSqlConnection" Condition="AI_INSTALL" Ordering="2"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND (OLDPRODUCTS = "" )" Ordering="201"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="202"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( ELK_CONNECTION = 1 AND SqlConnectionError = "" )" Ordering="7"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="NewDialog" Argument="ZKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "False" )" Ordering="6"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="3"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Back" Event="NewDialog" Argument="SQLConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError <> "" )" Ordering="5"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnection" Condition="AI_INSTALL" Ordering="3"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_1" Condition="AI_INSTALL" Ordering="2"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnectionMsgBox" Condition="AI_INSTALL AND ( ELK_CONNECTION = 0 )" Ordering="6"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER" Condition="AI_INSTALL AND ( ELK_CONNECTION = 0 )" Ordering="5"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnectionMsgBox" Condition="AI_INSTALL AND ( ELK_CONNECTION = "False" )" Ordering="5"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER" Condition="AI_INSTALL AND ( ELK_CONNECTION = "False" )" Ordering="4"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS <> "" )" Ordering="3"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS <> "" )" Ordering="4"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnection" Condition="AI_INSTALL AND ( SqlConnectionError = "" )" Ordering="3"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_1" Condition="AI_INSTALL AND ( SqlConnectionError = "" )" Ordering="2"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = 0 )" Ordering="5"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="SpawnDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = 1 )" Ordering="8"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnection" Condition="AI_INSTALL" Ordering="204"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_1" Condition="AI_INSTALL" Ordering="203"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = 0 )" Ordering="206"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnection" Condition="AI_INSTALL" Ordering="3"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_1" Condition="AI_INSTALL" Ordering="2"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "False" AND OLDPRODUCTS <> "" )" Ordering="11"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="SpawnDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" )" Ordering="8"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="TestElasticsearchConnection" Condition="AI_INSTALL AND SqlConnectionError = """ Ordering="203"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_1" Condition="AI_INSTALL AND SqlConnectionError = """ Ordering="202"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "False" )" Ordering="211"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" )" Ordering="7"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Back" Event="NewDialog" Argument="ELKConnectionDlg" Condition="AI_INSTALL AND ( ELK_CONNECTION = "False" )" Ordering="3"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" )" Ordering="8"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Back" Event="NewDialog" Argument="ZKConnectionDlg" Condition="AI_INSTALL AND ( ZK_CONNECTION = "False" )" Ordering="3"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="1"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS = "" )" Ordering="1"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS <> "" )" Ordering="2"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL AND ( OLDPRODUCTS <> "" )" Ordering="2"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="TestZookeeperConnection" Condition="AI_INSTALL" Ordering="5"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_4" Condition="AI_INSTALL" Ordering="4"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="TestKafkaConnection" Condition="AI_INSTALL" Ordering="7"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_15" Condition="AI_INSTALL" Ordering="6"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="ZKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "False" AND OLDPRODUCTS <> "" )" Ordering="12"/>
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" AND OLDPRODUCTS <> "" )" Ordering="15"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="ZKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "False" )" Ordering="212"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" )" Ordering="213"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="TestZookeeperConnection" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" )" Ordering="206"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_4" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" )" Ordering="205"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="TestKafkaConnection" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" )" Ordering="209"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_15" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" )" Ordering="208"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="DoAction" Argument="TestZookeeperConnection" Condition="AI_INSTALL" Ordering="3"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_4" Condition="AI_INSTALL" Ordering="2"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="DoAction" Argument="TestZookeeperConnectionMsgBox" Condition="AI_INSTALL AND ( ZK_CONNECTION = "False" )" Ordering="5"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_14" Condition="AI_INSTALL AND ( ZK_CONNECTION = "False" )" Ordering="4"/>
|
||||
<ROW Dialog_="ZKConnectionDlg" Control_="Next" Event="SpawnDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" )" Ordering="8"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="NewDialog" Argument="ZKConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "False" )" Ordering="6"/>
|
||||
<ROW Dialog_="SQLConnectionDlg" Control_="Next" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" )" Ordering="7"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="SpawnDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "True" )" Ordering="8"/>
|
||||
<ROW Dialog_="ELKConnectionDlg" Control_="Next" Event="NewDialog" Argument="KAFKAConnectionDlg" Condition="AI_INSTALL AND ( SqlConnectionError = "" AND ELK_CONNECTION = "True" AND ZK_CONNECTION = "True" AND KAFKA_CONNECTION = "False" )" Ordering="7"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Next" Event="DoAction" Argument="TestKafkaConnection" Condition="AI_INSTALL" Ordering="4"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_15" Condition="AI_INSTALL" Ordering="3"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Next" Event="DoAction" Argument="TestKafkaConnectionMsgBox" Condition="AI_INSTALL AND ( KAFKA_CONNECTION = "False" )" Ordering="7"/>
|
||||
<ROW Dialog_="KAFKAConnectionDlg" Control_="Next" Event="DoAction" Argument="AI_DATA_SETTER_16" Condition="AI_INSTALL AND ( KAFKA_CONNECTION = "False" )" Ordering="6"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
|
||||
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
|
||||
@ -369,18 +444,22 @@
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_ConfigFailActions" Type="11265" Source="aicustact.dll" Target="ConfigureServFailActions" WithoutSeq="true"/>
|
||||
<ROW Action="AI_DATA_SETTER" Type="51" Source="CustomActionData" Target="[ELASTICSEARCH_MSG] \n[ELASTICSEARCH_SCHEME]://[ELASTICSEARCH_HOST]:[ELASTICSEARCH_PORT] |[ProductName] Setup |MB_OK,MB_ICONWARNING,MB_DEFBUTTON1||[CLIENTPROCESSID]"/>
|
||||
<ROW Action="AI_DATA_SETTER_1" Type="51" Source="CustomActionData" Target="AEQAaQBnAGkAdABhAGwAbAB5AFMAaQBnAG4AUwBjAHIAaQBwAHQAAgABAEYAbABhAGcAcwACADYAAQBQAGEAcgBhAG0AcwACAAEAUwBjAHIAaQBwAHQAAgAjAFIAZQBxAHUAaQByAGUAcwAgAC0AdgBlAHIAcwBpAG8AbgAgADMADQAKAFAAYQByAGEAbQAoACkADQAKAA0ACgBmAHUAbgBjAHQAaQBvAG4AIABDAGgAZQBjAGsAVABDAFAAUABvAHIAdABBAHYAYQBpAGwAYQBiAGkAbABpAHQAeQAgAFsAXAB7AF0ADQAKAA0ACgAgACAAcABhAHIAYQBtACAAKAAgACQAdABjAHAAXwBoAG8AcwB0ACwAIAAkAHAAbwByAHQAIAApAA0ACgANAAoAIAAgACQAdABpAG0AZQBfAHQAbwBfAHcAYQBpAHQAIAA9ACAAMQAwADAAMAANAAoAIAAgACQAdABjAHAAbwBiAGoAZQBjAHQAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAHMAeQBzAHQAZQBtAC4ATgBlAHQALgBTAG8AYwBrAGUAdABzAC4AVABjAHAAQwBsAGkAZQBuAHQADQAKACAAIAAkAGMAbwBuAG4AZQBjAHQAIAA9ACAAJAB0AGMAcABvAGIAagBlAGMAdAAuAEIAZQBnAGkAbgBDAG8AbgBuAGUAYwB0ACgAJAB0AGMAcABfAGgAbwBzAHQALAAgACQAcABvAHIAdAAsACAAJABuAHUAbABsACwAIAAkAG4AdQBsAGwAKQANAAoAIAAgACQAdwBhAGkAdAAgAD0AIAAkAGMAbwBuAG4AZQBjAHQALgBBAHMAeQBuAGMAVwBhAGkAdABIAGEAbgBkAGwAZQAuAFcAYQBpAHQATwBuAGUAKAAkAHQAaQBtAGUAXwB0AG8AXwB3AGEAaQB0ACwAIAAkAGYAYQBsAHMAZQApAA0ACgAgACAAaQBmACAAKAAtAE4AbwB0ACAAJAB3AGEAaQB0ACkAIABbAFwAewBdAA0ACgAgACAAIAAgAHIAZQB0AHUAcgBuACAAMAANAAoAIAAgAFsAXAB9AF0AIABlAGwAcwBlACAAWwBcAHsAXQANAAoAIAAgACAAIAAkAEUAcgByAG8AcgAuAGMAbABlAGEAcgAoACkADQAKACAAIAAgACAAJAB0AGMAcABvAGIAagBlAGMAdAAuAEUAbgBkAEMAbwBuAG4AZQBjAHQAKAAkAGMAbwBuAG4AZQBjAHQAKQAgAHwAIABPAHUAdAAtAE4AdQBsAGwADQAKACAAIAAgACAAaQBmACAAKAAkAEUAcgByAG8AcgBbAFwAWwBdADAAWwBcAF0AXQApACAAWwBcAHsAXQANAAoAIAAgACAAIAAgACAAIAAgAFcAcgBpAHQAZQAtAFcAYQByAG4AaQBuAGcAIAAoACIAWwBcAHsAXQAwAFsAXAB9AF0AIgAgAC0AZgAgACQARQByAHIAbwByAFsAXABbAF0AMABbAFwAXQBdAC4ARQB4AGMAZQBwAHQAaQBvAG4ALgBNAGUAcwBzAGEAZwBlACkADQAKACAAIAAgACAAWwBcAH0AXQAgAGUAbABzAGUAIABbAFwAewBdAA0ACgAgACAAIAAgACAAIAAgACAAcgBlAHQAdQByAG4AIAAxAA0ACgAgACAAIAAgAFsAXAB9AF0ADQAKACAAIABbAFwAfQBdAA0ACgBbAFwAfQBdAA0ACgANAAoAJABFAEwASwBfAEgATwBTAFQAIAA9ACAAQQBJAF8ARwBlAHQATQBzAGkAUAByAG8AcABlAHIAdAB5ACAARQBMAEEAUwBUAEkAQwBTAEUAQQBSAEMASABfAEgATwBTAFQADQAKACQARQBMAEsAXwBQAE8AUgBUACAAPQAgAEEASQBfAEcAZQB0AE0AcwBpAFAAcgBvAHAAZQByAHQAeQAgAEUATABBAFMAVABJAEMAUwBFAEEAUgBDAEgAXwBQAE8AUgBUAA0ACgANAAoAJABFAEwASwBfAEMATwBOAE4ARQBDAFQASQBPAE4AIAA9ACAAQwBoAGUAYwBrAFQAQwBQAFAAbwByAHQAQQB2AGEAaQBsAGEAYgBpAGwAaQB0AHkAIAAkAEUATABLAF8ASABPAFMAVAAgACQARQBMAEsAXwBQAE8AUgBUAA0ACgANAAoAQQBJAF8AUwBlAHQATQBzAGkAUAByAG8AcABlAHIAdAB5ACAARQBMAEsAXwBDAE8ATgBOAEUAQwBUAEkATwBOACAAJABFAEwASwBfAEMATwBOAE4ARQBDAFQASQBPAE4="/>
|
||||
<ROW Action="AI_DATA_SETTER_10" Type="51" Source="CustomActionData" Target="MySQL80"/>
|
||||
<ROW Action="AI_DATA_SETTER_11" Type="51" Source="CustomActionData" Target="MySQL80"/>
|
||||
<ROW Action="AI_DATA_SETTER_12" Type="51" Source="CustomActionData" Target="Elasticsearch"/>
|
||||
<ROW Action="AI_DATA_SETTER_13" Type="51" Source="StartElasticSearchService" Target="Elasticsearch"/>
|
||||
<ROW Action="AI_DATA_SETTER_1" Type="51" Source="CustomActionData" Target="HOST=[ELASTICSEARCH_HOST];PORT=[ELASTICSEARCH_PORT];OUTPUT=ELK_CONNECTION"/>
|
||||
<ROW Action="AI_DATA_SETTER_2" Type="51" Source="CustomActionData" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DATA_SETTER_3" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_4" Type="51" Source="CustomActionData" Target="HOST=[ZOOKEEPER_HOST];PORT=[ZOOKEEPER_PORT];OUTPUT=ZK_CONNECTION"/>
|
||||
<ROW Action="AI_DATA_SETTER_5" Type="51" Source="CustomActionData" Target="[SqlConnectionError] |[ProductName] Setup |MB_OK,MB_ICONWARNING,MB_DEFBUTTON1||[CLIENTPROCESSID]"/>
|
||||
<ROW Action="AI_DATA_SETTER_6" Type="51" Source="CustomActionData" Target="[APPDIR_FORWARD_SLASH]"/>
|
||||
<ROW Action="AI_DATA_SETTER_7" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_8" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_9" Type="51" Source="CustomActionData" Target="MySQL80"/>
|
||||
<ROW Action="AI_DATA_SETTER_10" Type="51" Source="CustomActionData" Target="MySQL80"/>
|
||||
<ROW Action="AI_DATA_SETTER_11" Type="51" Source="CustomActionData" Target="MySQL80"/>
|
||||
<ROW Action="AI_DATA_SETTER_12" Type="51" Source="CustomActionData" Target="Elasticsearch"/>
|
||||
<ROW Action="AI_DATA_SETTER_13" Type="51" Source="StartElasticSearchService" Target="Elasticsearch"/>
|
||||
<ROW Action="AI_DATA_SETTER_14" Type="51" Source="CustomActionData" Target="[ZOOKEEPER_MSG] \n[ZOOKEEPER_SCHEME]://[ZOOKEEPER_HOST]:[ZOOKEEPER_PORT] |[ProductName] Setup |MB_OK,MB_ICONWARNING,MB_DEFBUTTON1||[CLIENTPROCESSID]"/>
|
||||
<ROW Action="AI_DATA_SETTER_15" Type="51" Source="CustomActionData" Target="HOST=[KAFKA_HOST];PORT=[KAFKA_PORT];OUTPUT=KAFKA_CONNECTION"/>
|
||||
<ROW Action="AI_DATA_SETTER_16" Type="51" Source="CustomActionData" Target="[KAFKA_MSG] \n[KAFKA_SCHEME]://[KAFKA_HOST]:[KAFKA_PORT] |[ProductName] Setup |MB_OK,MB_ICONWARNING,MB_DEFBUTTON1||[CLIENTPROCESSID]"/>
|
||||
<ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>
|
||||
<ROW Action="AI_DeleteCadLzma" Type="51" Source="AI_DeleteLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DeleteLzma" Type="1025" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
|
||||
@ -427,13 +506,19 @@
|
||||
<ROW Action="StartMySQLService" Type="1" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_11"/>
|
||||
<ROW Action="StopElasticSearchService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_12"/>
|
||||
<ROW Action="StopMySQLService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_10"/>
|
||||
<ROW Action="TestElasticsearchConnection" Type="1" Source="PowerShellScriptLauncher.dll" Target="RunPowerShellScript" WithoutSeq="true" Options="1" AdditionalSeq="AI_DATA_SETTER_1"/>
|
||||
<ROW Action="TestElasticsearchConnection" Type="1" Source="Utils.CA.dll" Target="CheckTCPAvailability" WithoutSeq="true" AdditionalSeq="AI_DATA_SETTER_1"/>
|
||||
<ROW Action="TestElasticsearchConnectionMsgBox" Type="1" Source="aicustact.dll" Target="MsgBox" WithoutSeq="true" Options="1" AdditionalSeq="AI_DATA_SETTER"/>
|
||||
<ROW Action="TestKafkaConnection" Type="1" Source="Utils.CA.dll" Target="CheckTCPAvailability" WithoutSeq="true" AdditionalSeq="AI_DATA_SETTER_15"/>
|
||||
<ROW Action="TestKafkaConnectionMsgBox" Type="1" Source="aicustact.dll" Target="MsgBox" WithoutSeq="true" Options="1" AdditionalSeq="AI_DATA_SETTER_16"/>
|
||||
<ROW Action="TestSQLConnectionMsgBox" Type="1" Source="aicustact.dll" Target="MsgBox" WithoutSeq="true" Options="1" AdditionalSeq="AI_DATA_SETTER_5"/>
|
||||
<ROW Action="TestSqlConnection" Type="6" Source="utils.vbs" Target="TestSqlConnection" WithoutSeq="true"/>
|
||||
<ROW Action="TestZookeeperConnection" Type="1" Source="Utils.CA.dll" Target="CheckTCPAvailability" WithoutSeq="true" AdditionalSeq="AI_DATA_SETTER_4"/>
|
||||
<ROW Action="TestZookeeperConnectionMsgBox" Type="1" Source="aicustact.dll" Target="MsgBox" WithoutSeq="true" Options="1" AdditionalSeq="AI_DATA_SETTER_14"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiDialogComponent">
|
||||
<ROW Dialog="ELKConnectionDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
|
||||
<ROW Dialog="KAFKAConnectionDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
|
||||
<ROW Dialog="ZKConnectionDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiEnvComponent">
|
||||
<ROW Environment="JAVA_HOME" Name="=-*JAVA_HOME" Value="[WindowsVolume]Progra~1\Elastic\Elasticsearch\7.13.1\jdk" Component_="AI_ExePath"/>
|
||||
@ -527,12 +612,12 @@
|
||||
<ROW Action="AI_RestartElevated" Sequence="51"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
|
||||
<ROW Condition="((VersionNT <> 501) AND (VersionNT <> 502))" Description="Нельзя установить [ProductName] на [WindowsTypeNT5XDisplay]." DescriptionLocId="AI.LaunchCondition.NoNT5X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="(VersionNT <> 400)" Description="Нельзя установить [ProductName] на [WindowsTypeNT40Display]." DescriptionLocId="AI.LaunchCondition.NoNT40" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="(VersionNT <> 500)" Description="Нельзя установить [ProductName] на [WindowsTypeNT50Display]." DescriptionLocId="AI.LaunchCondition.NoNT50" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="AI_DETECTED_INTERNET_CONNECTION" Description="Для установки [ProductName] требуется активное подключение к Интернету. Пожалуйста, проверьте настройки прокси-сервера и конфигурации сети." DescriptionLocId="AI.LaunchCondition.Internet" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="SETUPEXEDIR OR (REMOVE="ALL")" Description="Этот пакет можно запускать только из загрузчика." DescriptionLocId="AI.LaunchCondition.RequireBootstrapper" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="VersionNT" Description="[ProductName] не может быть установлен на [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="((VersionNT <> 501) AND (VersionNT <> 502))" Description="[ProductName] cannot be installed on [WindowsTypeNT5XDisplay]." DescriptionLocId="AI.LaunchCondition.NoNT5X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="(VersionNT <> 400)" Description="[ProductName] cannot be installed on [WindowsTypeNT40Display]." DescriptionLocId="AI.LaunchCondition.NoNT40" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="(VersionNT <> 500)" Description="[ProductName] cannot be installed on [WindowsTypeNT50Display]." DescriptionLocId="AI.LaunchCondition.NoNT50" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="AI_DETECTED_INTERNET_CONNECTION" Description="[ProductName] requires an active Internet connection for installation. Please check your network configuration and proxy settings." DescriptionLocId="AI.LaunchCondition.Internet" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="SETUPEXEDIR OR (REMOVE="ALL")" Description="This package can only be run from a bootstrapper." DescriptionLocId="AI.LaunchCondition.RequireBootstrapper" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
<ROW Condition="VersionNT" Description="[ProductName] cannot be installed on [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegLocatorComponent">
|
||||
<ROW Signature_="AI_EXE_PATH_CU" Root="1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
|
||||
@ -654,10 +739,10 @@
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.PreReqComponent">
|
||||
<ROW PrereqKey="A918597FE054CCCB65ABDBA0AD8F63C" DisplayName="Visual C++ Redistributable for Visual Studio 2015-2019 x86" VersionMin="14.26" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/d60aa805-26e9-47df-b4e3-cd6fcc392333/A06AAC66734A618AB33C1522920654DDFC44FC13CAFAA0F0AB85B199C3D51DC0/VC_redist.x86.exe" Location="1" ExactSize="14413048" WinNTVersions="Windows Vista RTM x86, Windows Vista SP1 x86, Windows Server 2008 RTM x86, Windows 7 RTM x86" WinNT64Versions="Windows Vista RTM x64, Windows Vista SP1 x64, Windows Server 2008 RTM x64, Windows 7 RTM x64, Windows Server 2008 R2 RTM x64" Operator="0" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="fe6eae1c34528d1ea224569dcdc35618" TargetName="Visual C++ Redistributable for Visual Studio 2015-2019"/>
|
||||
<ROW PrereqKey="A9D0C6C76E024A7A84C9B69789BFB916" DisplayName="ASP.NET Core Runtime 6.0.0 x86" VersionMin="6.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/7f757d80-b065-430e-ba65-7e95c3ec95e1/4d0335985f09db0650bbf9efe773f46c/aspnetcore-runtime-6.0.0-win-x86.exe" Location="1" ExactSize="8122576" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="5fe23a4a4752deb2218b95cc84557429" TargetName="ASP.NET Core 6.0"/>
|
||||
<ROW PrereqKey="ApacheKafka" DisplayName="Apache Kafka" VersionMin="1.0.0" SetupFileUrl="Apache Kafka.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/qn" BasicUiComLine="/qn" NoUiComLine="/qn" Options="y" TargetName="Apache Kafka\Apache Kafka.msi"/>
|
||||
<ROW PrereqKey="ApacheZooKepper" DisplayName="Apache ZooKepper" VersionMin="1.0.0" SetupFileUrl="Apache ZooKeeper.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/qn" BasicUiComLine="/qn" NoUiComLine="/qn" Options="y" TargetName="Apache ZooKepper\Apache ZooKeeper.msi"/>
|
||||
<ROW PrereqKey="B365F790B0C4E08A90D54675D858A21" DisplayName=".NET Core Runtime 3.1.10 x64" VersionMin="3.1" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/9845b4b0-fb52-48b6-83cf-4c431558c29b/41025de7a76639eeff102410e7015214/dotnet-runtime-3.1.10-win-x64.exe" Location="1" ExactSize="26230496" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="y" MD5="a6e46b0e884ba62316560e3bd17384a5" TargetName=".NET Core 3.1"/>
|
||||
<ROW PrereqKey="B450414DF7494F99141402B8725A7C" DisplayName=".NET Core Runtime 3.1.10 x86" VersionMin="3.1" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/abb3fb5d-4e82-4ca8-bc03-ac13e988e608/b34036773a72b30c5dc5520ee6a2768f/dotnet-runtime-3.1.10-win-x86.exe" Location="1" ExactSize="23451472" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="y" MD5="03832c85bc74de4fcb7fffa862b9f4a5" TargetName=".NET Core 3.1"/>
|
||||
<ROW PrereqKey="ApacheKafka" DisplayName="Apache Kafka" VersionMin="1.0.0" SetupFileUrl="Apache Kafka.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/qn /norestart" BasicUiComLine="/qn /norestart" NoUiComLine="/qn /norestart" Options="y" TargetName="Apache Kafka\Apache Kafka.msi"/>
|
||||
<ROW PrereqKey="ApacheZooKepper" DisplayName="Apache ZooKepper" VersionMin="1.0.0" SetupFileUrl="Apache ZooKeeper.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/qn /norestart" BasicUiComLine="/qn /norestart" NoUiComLine="/qn /norestart" Options="y" TargetName="Apache ZooKepper\Apache ZooKeeper.msi"/>
|
||||
<ROW PrereqKey="B365F790B0C4E08A90D54675D858A21" DisplayName=".NET Core Runtime 3.1.10 x64" VersionMin="3.1" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/9845b4b0-fb52-48b6-83cf-4c431558c29b/41025de7a76639eeff102410e7015214/dotnet-runtime-3.1.10-win-x64.exe" Location="1" ExactSize="26230496" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="a6e46b0e884ba62316560e3bd17384a5" TargetName=".NET Core 3.1"/>
|
||||
<ROW PrereqKey="B450414DF7494F99141402B8725A7C" DisplayName=".NET Core Runtime 3.1.10 x86" VersionMin="3.1" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/abb3fb5d-4e82-4ca8-bc03-ac13e988e608/b34036773a72b30c5dc5520ee6a2768f/dotnet-runtime-3.1.10-win-x86.exe" Location="1" ExactSize="23451472" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="03832c85bc74de4fcb7fffa862b9f4a5" TargetName=".NET Core 3.1"/>
|
||||
<ROW PrereqKey="B96F93FA27E74B02866727AAE83982D0" DisplayName=".NET Framework 4.8" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0fd66638cde16859462a6243a4629a50/ndp48-x86-x64-allos-enu.exe" Location="1" ExactSize="117380440" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86, Windows 10 version 1903 x86, Windows 10 version 1909 x86, Windows 10 version 2004 x86, Windows 10 version 20H2 x86, Windows 10 version 21H1 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 RTM x64, Windows 8 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64, Windows 10 version 1903 x64, Windows 10 version 1909 x64, Windows 10 version 2004 x64, Windows 10 version 20H2 x64, Windows 10 version 21H1 x64" Operator="1" ComLine="/q" BasicUiComLine="/q" NoUiComLine="/q" Options="xym" MD5="aebcb9fcafa2becf8bb30458a7e1f0a2" TargetName=".NET Framework 4.8"/>
|
||||
<ROW PrereqKey="C4FE6FD5B7C4D07B3A313E754A9A6A8" DisplayName="Visual C++ Redistributable for Visual Studio 2015-2019 x64" VersionMin="14.26" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/d60aa805-26e9-47df-b4e3-cd6fcc392333/7D7105C52FCD6766BEEE1AE162AA81E278686122C1E44890712326634D0B055E/VC_redist.x64.exe" Location="1" ExactSize="14974616" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista RTM x64, Windows Vista SP1 x64, Windows Server 2008 RTM x64, Windows 7 RTM x64, Windows Server 2008 R2 RTM x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="xym" MD5="264c296cc0bf00db6ba8e7bf8cc4e706" TargetName="Visual C++ Redistributable for Visual Studio 2015-2019"/>
|
||||
<ROW PrereqKey="C6F7BF650B714DC58735D62C12F214E4" DisplayName=".NET Runtime 6.0.0 x64" VersionMin="6.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/b9cfdb9e-d5cd-4024-b318-00390b729d2f/65690f2440f40654898020cdfffa1050/dotnet-runtime-6.0.0-win-x64.exe" Location="1" ExactSize="28180712" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="7ec466a9808697c935bd0525a922beca" TargetName=".NET 6.0"/>
|
||||
@ -665,7 +750,7 @@
|
||||
<ROW PrereqKey="D564007E3BBE4F85950A09B470A7CA65" DisplayName="Visual C++ Redistributable for Visual Studio 2013 Update 5 x86" VersionMin="12.0" SetupFileUrl="http://download.microsoft.com/download/C/C/2/CC2DF5F8-4454-44B4-802D-5EA68D086676/vcredist_x86.exe" Location="1" ExactSize="6510272" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" MD5="6a3a1760342ea699d5e6df1f2a1c7707" TargetName="Visual C++ Redistributable for Visual Studio 2013?vcredist_2013u5_x86.exe"/>
|
||||
<ROW PrereqKey="E25D6A62194038942640BDE651049C" DisplayName="ASP.NET Core Runtime 6.0.0 x64" VersionMin="6.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/3223fa10-441d-406b-af2e-94874ce38199/09347f9b4aea0ab34d6944b6b78fa29d/aspnetcore-runtime-6.0.0-win-x64.exe" Location="1" ExactSize="8897224" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="xym" MD5="27ec1b4780b035ac230399c120280a5e" TargetName="ASP.NET Core 6.0"/>
|
||||
<ROW PrereqKey="E92D3665B5E468A8661F6547C8C142C" DisplayName=".NET Runtime 6.0.0 x86" VersionMin="6.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/34df41d5-c813-4e30-8aa3-3603ce6600c0/976e801af82c7108abbcb736a8bc5c14/dotnet-runtime-6.0.0-win-x86.exe" Location="1" ExactSize="25750728" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="d8033ef93d3a003691f3046ea013447c" TargetName=".NET 6.0"/>
|
||||
<ROW PrereqKey="F6D8148C0594E7491C36E27FD5E9E89" DisplayName="Oracle Java SE Runtime Environment 8u281 x64" VersionMin="1.8" SetupFileUrl="https://javadl.oracle.com/webapps/download/AutoDL?BundleId=244068_89d678f2be164786b292527658ca1605" Location="1" ExactSize="83548808" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista RTM x64, Windows Vista SP1 x64" Operator="0" ComLine="/s" BasicUiComLine="/s" NoUiComLine="/s" Options="xy" MD5="c6136758f1fec04a2f7f01249280c315" TargetName="Oracle Java SE Runtime Environment?jre-8u281-windows-x64.exe"/>
|
||||
<ROW PrereqKey="F6D8148C0594E7491C36E27FD5E9E89" DisplayName="Oracle Java SE Runtime Environment 8u281 x64" VersionMin="1.8" SetupFileUrl="https://javadl.oracle.com/webapps/download/AutoDL?BundleId=244068_89d678f2be164786b292527658ca1605" Location="1" ExactSize="83548808" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista RTM x64, Windows Vista SP1 x64" Operator="0" ComLine="/s" BasicUiComLine="/s" NoUiComLine="/s" Options="xym" MD5="c6136758f1fec04a2f7f01249280c315" TargetName="Oracle Java SE Runtime Environment?jre-8u281-windows-x64.exe"/>
|
||||
<ROW PrereqKey="MySQLInstallerRunn" DisplayName="MySQL Installer Runner 8.0.21 x86" SetupFileUrl="MySQL Installer Runner.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/VERYSILENT /PASSWORD_PROP="root" /MYSQL_VERSION="8.0.21"" BasicUiComLine="/VERYSILENT /PASSWORD_PROP="root" /MYSQL_VERSION="8.0.21"" NoUiComLine="/VERYSILENT /PASSWORD_PROP="root" /MYSQL_VERSION="8.0.21"" Options="y" TargetName="MySQL Installer Runner \MySQL Installer Runner.exe" ParentPrereq="RequiredApplication_2"/>
|
||||
<ROW PrereqKey="RequiredApplication" DisplayName="MySQL Connector/ODBC 8.0.21 x86" SetupFileUrl="https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.21-win32.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="MySQL Connector ODBC 8.0.21 x86"/>
|
||||
<ROW PrereqKey="RequiredApplication_1" DisplayName="Node.js 14.17.4" VersionMin="14.17.4" SetupFileUrl="https://nodejs.org/dist/v14.17.4/node-v14.17.4-x64.msi" Location="1" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="my" TargetName="Node.js v14.17.4 x64"/>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||
<supportedRuntime version="v4.0" />
|
||||
<supportedRuntime version="v2.0.50727"/>
|
||||
</startup>
|
||||
</configuration>
|
20
build/install/win/CustomActions/C#/Utils/CustomAction.cs
Normal file
20
build/install/win/CustomActions/C#/Utils/CustomAction.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Net.Sockets;
|
||||
using Microsoft.Deployment.WindowsInstaller;
|
||||
|
||||
namespace Utils
|
||||
{
|
||||
public class CustomActions
|
||||
{
|
||||
[CustomAction]
|
||||
public static ActionResult CheckTCPAvailability(Session session)
|
||||
{
|
||||
string HOST = session.CustomActionData["HOST"];
|
||||
string PORT = session.CustomActionData["PORT"];
|
||||
string OUTPUT = session.CustomActionData["OUTPUT"];
|
||||
var success = new TcpClient().BeginConnect(HOST, Convert.ToInt32(PORT), null, null).AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1));
|
||||
session[OUTPUT] = success.ToString();
|
||||
return ActionResult.Success;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Utils")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Utils")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("31f44d45-4371-4b33-a846-2e3b78131469")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
53
build/install/win/CustomActions/C#/Utils/Utils.csproj
Normal file
53
build/install/win/CustomActions/C#/Utils/Utils.csproj
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{F149436D-C079-4011-88D2-B45167C81595}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Utils</RootNamespace>
|
||||
<AssemblyName>Utils</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<WixCATargetsPath Condition=" '$(WixCATargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.CA.targets</WixCATargetsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<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|x86' ">
|
||||
<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" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.Deployment.WindowsInstaller">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomAction.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="CustomAction.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(WixCATargetsPath)" />
|
||||
</Project>
|
@ -1,3 +1,6 @@
|
||||
REM echo ######## Set variables ########
|
||||
set "msbuild4="C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe""
|
||||
|
||||
REM echo ######## Extracting and preparing files to build ########
|
||||
%sevenzip% x build\install\win\nginx-1.21.1.zip -o"build\install\win\Files" -y
|
||||
xcopy "build\install\win\Files\nginx-1.21.1" "build\install\win\Files\nginx" /s /y /b /i
|
||||
@ -25,6 +28,12 @@ copy "build\install\win\kafka-zookeeper\zookeeper\conf\zoo_sample.cfg" "build\in
|
||||
del /f /q "build\install\win\kafka-zookeeper\zookeeper\conf\zoo_sample.cfg"
|
||||
rmdir build\install\win\publish /s /q
|
||||
|
||||
REM echo ######## Build Utils ########
|
||||
%msbuild4% build\install\win\CustomActions\C#\Utils\Utils.csproj
|
||||
copy build\install\win\CustomActions\C#\Utils\bin\Debug\Utils.CA.dll build\install\win\Utils.CA.dll /y
|
||||
rmdir build\install\win\CustomActions\C#\Utils\bin /s /q
|
||||
rmdir build\install\win\CustomActions\C#\Utils\obj /s /q
|
||||
|
||||
REM echo ######## Edit zookeeper/kafka cfg and proprties files ########
|
||||
%sed% -i "s/\(dataDir\).*/\1=.\/..\/zookeeper\/Data/g" build/install/win/kafka-zookeeper/zookeeper/conf/zoo.cfg
|
||||
%sed% -i "s/\(log.dirs\)=.*/\1=kafka-logs/g" build/install/win/kafka-zookeeper/kafka/config/server.properties
|
||||
@ -74,4 +83,5 @@ REM echo ######## Build MySQL Server Installer ########
|
||||
iscc "build\install\win\MySQL Server Installer Runner.iss"
|
||||
|
||||
REM echo ######## Build AppServer package ########
|
||||
%AdvancedInstaller% /edit build\install\win\AppServer.aip /SetVersion %BUILD_VERSION%.%BUILD_NUMBER%
|
||||
%AdvancedInstaller% /rebuild build\install\win\AppServer.aip
|
||||
|
@ -3,6 +3,7 @@
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.Settings;
|
||||
using ASC.IPSecurity;
|
||||
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@ -19,16 +20,18 @@ namespace ASC.Api.Core.Middleware
|
||||
public IpSecurityFilter(
|
||||
IOptionsMonitor<ILog> options,
|
||||
AuthContext authContext,
|
||||
IPSecurity.IPSecurity IPSecurity)
|
||||
IPSecurity.IPSecurity IPSecurity,
|
||||
SettingsManager settingsManager)
|
||||
{
|
||||
log = options.CurrentValue;
|
||||
AuthContext = authContext;
|
||||
this.IPSecurity = IPSecurity;
|
||||
SettingsManager = settingsManager;
|
||||
}
|
||||
|
||||
private AuthContext AuthContext { get; }
|
||||
public IPRestrictionsSettings IPRestrictionsSettings { get; }
|
||||
private IPSecurity.IPSecurity IPSecurity { get; }
|
||||
private SettingsManager SettingsManager { get; }
|
||||
|
||||
public void OnResourceExecuted(ResourceExecutedContext context)
|
||||
{
|
||||
@ -36,7 +39,12 @@ namespace ASC.Api.Core.Middleware
|
||||
|
||||
public void OnResourceExecuting(ResourceExecutingContext context)
|
||||
{
|
||||
if (AuthContext.IsAuthenticated && !IPSecurity.Verify())
|
||||
|
||||
if (AuthContext.IsAuthenticated)
|
||||
{
|
||||
var enable = SettingsManager.Load<IPRestrictionsSettings>().Enable;
|
||||
|
||||
if (enable && !IPSecurity.Verify())
|
||||
{
|
||||
context.Result = new StatusCodeResult((int)HttpStatusCode.Forbidden);
|
||||
log.WarnFormat("IPSecurity: user {0}", AuthContext.CurrentAccount.ID);
|
||||
@ -44,4 +52,5 @@ namespace ASC.Api.Core.Middleware
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,10 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Web;
|
||||
|
||||
using ASC.Common;
|
||||
@ -55,6 +57,7 @@ namespace ASC.IPSecurity
|
||||
private SettingsManager SettingsManager { get; }
|
||||
|
||||
private readonly string CurrentIpForTest;
|
||||
private readonly string MyNetworks;
|
||||
|
||||
public IPSecurity(
|
||||
IConfiguration configuration,
|
||||
@ -72,6 +75,7 @@ namespace ASC.IPSecurity
|
||||
IPRestrictionsService = iPRestrictionsService;
|
||||
SettingsManager = settingsManager;
|
||||
CurrentIpForTest = configuration["ipsecurity:test"];
|
||||
MyNetworks = configuration["ipsecurity:mynetworks"];
|
||||
var hideSettings = (configuration["web:hide-settings"] ?? "").Split(new[] { ',', ';', ' ' });
|
||||
IpSecurityEnabled = !hideSettings.Contains("IpSecurity", StringComparer.CurrentCultureIgnoreCase);
|
||||
}
|
||||
@ -109,6 +113,10 @@ namespace ASC.IPSecurity
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (IsMyNetwork(ips))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -140,5 +148,42 @@ namespace ASC.IPSecurity
|
||||
var portIdx = ip.IndexOf(':');
|
||||
return portIdx > 0 ? ip.Substring(0, portIdx) : ip;
|
||||
}
|
||||
|
||||
private bool IsMyNetwork(string[] ips)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(MyNetworks))
|
||||
{
|
||||
var myNetworkIps = MyNetworks.Split(new[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (ips.Any(requestIp => myNetworkIps.Any(ipAddress => MatchIPs(GetIpWithoutPort(requestIp), ipAddress))))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
var hostName = Dns.GetHostName();
|
||||
var hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
|
||||
|
||||
var localIPs = new List<IPAddress> { IPAddress.IPv6Loopback, IPAddress.Loopback };
|
||||
|
||||
localIPs.AddRange(hostAddresses.Where(ip => ip.AddressFamily == AddressFamily.InterNetwork || ip.AddressFamily == AddressFamily.InterNetworkV6));
|
||||
|
||||
foreach (var ipAddress in localIPs)
|
||||
{
|
||||
if (ips.Contains(ipAddress.ToString()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ErrorFormat("Can't verify local network from request with IP-address: {0}", string.Join(",", ips), ex);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -69,6 +69,13 @@ export function setIpRestrictions(data) {
|
||||
});
|
||||
}
|
||||
|
||||
export function getIpRestrictionsEnable() {
|
||||
return request({
|
||||
method: "get",
|
||||
url: "/settings/iprestrictions/settings",
|
||||
});
|
||||
}
|
||||
|
||||
export function setIpRestrictionsEnable(data) {
|
||||
return request({
|
||||
method: "put",
|
||||
|
@ -31,6 +31,7 @@ const Article = ({
|
||||
toggleShowText,
|
||||
toggleArticleOpen,
|
||||
setIsMobileArticle,
|
||||
isLoading,
|
||||
children,
|
||||
...rest
|
||||
}) => {
|
||||
@ -115,7 +116,11 @@ const Article = ({
|
||||
className="resizable-block"
|
||||
handleWrapperClass="resizable-border not-selectable"
|
||||
>
|
||||
<SubArticleHeader showText={showText} onClick={toggleShowText}>
|
||||
<SubArticleHeader
|
||||
isLoading={isLoading}
|
||||
showText={showText}
|
||||
onClick={toggleShowText}
|
||||
>
|
||||
{articleHeaderContent ? articleHeaderContent.props.children : null}
|
||||
</SubArticleHeader>
|
||||
{articleMainButtonContent && !isMobileOnly && !isMobileUtils() ? (
|
||||
@ -123,7 +128,7 @@ const Article = ({
|
||||
{articleMainButtonContent.props.children}
|
||||
</SubArticleMainButton>
|
||||
) : null}
|
||||
<SubArticleBody showText={showText}>
|
||||
<SubArticleBody isLoading={isLoading} showText={showText}>
|
||||
{articleBodyContent ? articleBodyContent.props.children : null}
|
||||
</SubArticleBody>
|
||||
</Resizable>
|
||||
|
@ -142,10 +142,18 @@ const StyledArticleHeader = styled.div`
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.loader {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
@media ${tablet} {
|
||||
padding: 16px 16px 17px;
|
||||
margin: 0;
|
||||
justify-content: ${(props) => (props.showText ? "flex-start" : "center")};
|
||||
.loader {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
@media ${mobile} {
|
||||
@ -159,6 +167,10 @@ const StyledArticleHeader = styled.div`
|
||||
padding: 16px 16px 17px;
|
||||
justify-content: ${(props) => (props.showText ? "flex-start" : "center")};
|
||||
margin: 0;
|
||||
.loader {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
`}
|
||||
|
||||
${isMobileOnly &&
|
||||
|
@ -0,0 +1,40 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
import { isTablet as isTabletUtils } from "@appserver/components/utils/device";
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
padding: 0px 16px 0px;
|
||||
|
||||
.loader {
|
||||
display: block;
|
||||
width: 20px;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
padding: 0px 20px 0px;
|
||||
margin-top: -7px;
|
||||
|
||||
.loader {
|
||||
width: 216px;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const LoaderArticleBody = () => {
|
||||
const heightLoader = isTabletUtils() || isTablet ? "20px" : "24px";
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderArticleBody;
|
@ -1,8 +1,10 @@
|
||||
import React from "react";
|
||||
import Scrollbar from "@appserver/components/scrollbar";
|
||||
|
||||
const ArticleBody = ({ children }) => {
|
||||
return (
|
||||
import LoaderArticleBody from "./article-body-loader";
|
||||
const ArticleBody = ({ children, isLoading = false }) => {
|
||||
return isLoading ? (
|
||||
<LoaderArticleBody />
|
||||
) : (
|
||||
<Scrollbar className="article-body__scrollbar" stype="mediumBlack">
|
||||
{children}
|
||||
</Scrollbar>
|
||||
|
@ -1,5 +1,8 @@
|
||||
import React from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
import { isTablet as isTabletUtils } from "@appserver/components/utils/device";
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
import {
|
||||
StyledArticleHeader,
|
||||
@ -8,8 +11,20 @@ import {
|
||||
StyledMenuIcon,
|
||||
} from "../styled-article";
|
||||
|
||||
const ArticleHeader = ({ showText, children, onClick, ...rest }) => {
|
||||
return (
|
||||
const ArticleHeader = ({
|
||||
showText,
|
||||
children,
|
||||
onClick,
|
||||
isLoading = false,
|
||||
...rest
|
||||
}) => {
|
||||
const heightLoader = isTabletUtils() || isTablet ? "20px" : "32px";
|
||||
|
||||
return isLoading ? (
|
||||
<StyledArticleHeader>
|
||||
<Loaders.ArticleHeader height={heightLoader} className="loader" />
|
||||
</StyledArticleHeader>
|
||||
) : (
|
||||
<StyledArticleHeader showText={showText} {...rest}>
|
||||
<StyledIconBox name="article-burger">
|
||||
<StyledMenuIcon onClick={onClick} />
|
||||
|
@ -105,6 +105,8 @@ const Navigation = ({
|
||||
getContextOptionsFolder={getContextOptionsFolder}
|
||||
getContextOptionsPlus={getContextOptionsPlus}
|
||||
toggleDropBox={toggleDropBox}
|
||||
toggleInfoPanel={toggleInfoPanel}
|
||||
isInfoPanelVisible={isInfoPanelVisible}
|
||||
onClickAvailable={onClickAvailable}
|
||||
/>
|
||||
)}
|
||||
|
@ -9,6 +9,8 @@ const StyledContainer = styled.div`
|
||||
grid-template-columns: ${(props) =>
|
||||
props.isRootFolder ? "auto 1fr" : "29px auto 1fr"};
|
||||
|
||||
padding: ${(props) => (props.isDropBox ? "10px 0 5px" : "10px 0 11px")};
|
||||
|
||||
.arrow-button {
|
||||
width: 17px;
|
||||
min-width: 17px;
|
||||
@ -16,24 +18,25 @@ const StyledContainer = styled.div`
|
||||
|
||||
@media ${tablet} {
|
||||
width: 100%;
|
||||
padding: ${(props) => (props.isDropBox ? "16px 0 5px" : "16px 0 0px")};
|
||||
padding: ${(props) => (props.isDropBox ? "14px 0 5px" : "14px 0 15px")};
|
||||
}
|
||||
${isMobile &&
|
||||
css`
|
||||
width: 100%;
|
||||
padding: ${(props) =>
|
||||
props.isDropBox ? "16px 0 5px" : " 16px 0 0px"} !important;
|
||||
props.isDropBox ? "12px 0 5px" : " 12px 0 13px"} !important;
|
||||
`}
|
||||
|
||||
@media ${mobile} {
|
||||
height: 53px;
|
||||
padding: ${(props) =>
|
||||
props.isDropBox ? "10px 0 5px" : "10px 0 11px"} !important;
|
||||
}
|
||||
|
||||
${isMobileOnly &&
|
||||
css`
|
||||
width: 100% !important;
|
||||
padding: ${(props) =>
|
||||
props.isDropBox ? "18px 0 5px" : "18px 0 0"} !important;
|
||||
props.isDropBox ? "10px 0 5px" : "10px 0 11px"} !important;
|
||||
`}
|
||||
`;
|
||||
|
||||
|
@ -31,7 +31,6 @@ const StyledContainer = styled.div`
|
||||
}
|
||||
|
||||
.option-button {
|
||||
margin-left: auto;
|
||||
margin-right: 15px;
|
||||
min-width: 17px;
|
||||
}
|
||||
@ -46,7 +45,7 @@ const StyledInfoPanelToggleWrapper = styled.div`
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
justify-content: center;
|
||||
margin-left: ${({ isRootFolder }) => (isRootFolder ? "auto" : "none")};
|
||||
margin-left: auto;
|
||||
|
||||
.info-panel-toggle-bg {
|
||||
height: 32px;
|
||||
@ -136,7 +135,7 @@ const ControlButtons = ({
|
||||
<div className="info-panel-toggle-bg">
|
||||
<IconButton
|
||||
className="info-panel-toggle"
|
||||
iconName="images/panel.svg"
|
||||
iconName="images/panel.react.svg"
|
||||
size="16"
|
||||
isFill={true}
|
||||
onClick={toggleInfoPanel}
|
||||
|
@ -26,7 +26,7 @@ const StyledBox = styled.div`
|
||||
top: 0px;
|
||||
left: ${isMobile ? "-16px" : "-20px"};
|
||||
|
||||
padding: ${isMobile ? "0 16px 0 16px" : "0 20px"};
|
||||
padding: ${isMobile ? "0 16px " : "0 20px"};
|
||||
|
||||
width: ${(props) => props.dropBoxWidth}px;
|
||||
|
||||
@ -85,7 +85,9 @@ const DropBox = React.forwardRef(
|
||||
getContextOptionsFolder,
|
||||
getContextOptionsPlus,
|
||||
toggleDropBox,
|
||||
toggleInfoPanel,
|
||||
onClickAvailable,
|
||||
isInfoPanelVisible,
|
||||
},
|
||||
ref
|
||||
) => {
|
||||
@ -141,6 +143,8 @@ const DropBox = React.forwardRef(
|
||||
canCreate={canCreate}
|
||||
getContextOptionsFolder={getContextOptionsFolder}
|
||||
getContextOptionsPlus={getContextOptionsPlus}
|
||||
toggleInfoPanel={toggleInfoPanel}
|
||||
isInfoPanelVisible={isInfoPanelVisible}
|
||||
/>
|
||||
</StyledContainer>
|
||||
|
||||
|
@ -222,7 +222,6 @@ class Section extends React.Component {
|
||||
isTabletView,
|
||||
firstLoad,
|
||||
dragging,
|
||||
isBackdropVisible,
|
||||
isDesktop,
|
||||
isHomepage,
|
||||
maintenanceExist,
|
||||
@ -560,9 +559,6 @@ export default inject(({ auth, infoPanelStore }) => {
|
||||
isHeaderVisible,
|
||||
isTabletView,
|
||||
|
||||
isBackdropVisible,
|
||||
|
||||
setIsBackdropVisible,
|
||||
isDesktopClient,
|
||||
maintenanceExist,
|
||||
snackbarExist,
|
||||
@ -579,8 +575,6 @@ export default inject(({ auth, infoPanelStore }) => {
|
||||
isTabletView,
|
||||
isHeaderVisible,
|
||||
|
||||
isBackdropVisible,
|
||||
setIsBackdropVisible,
|
||||
maintenanceExist,
|
||||
snackbarExist,
|
||||
setMaintenanceExist,
|
||||
|
@ -22,7 +22,7 @@ const tabletProps = css`
|
||||
${isMobileOnly &&
|
||||
css`
|
||||
padding: 0 16px;
|
||||
margin: 0 -16px;
|
||||
margin: 0 0 0 -16px;
|
||||
`}
|
||||
}
|
||||
.section-body_filter {
|
||||
|
@ -11,59 +11,42 @@ import Base from "@appserver/components/themes/base";
|
||||
|
||||
const StyledSectionHeader = styled.div`
|
||||
position: relative;
|
||||
height: 53px;
|
||||
min-height: 53px;
|
||||
margin-right: 20px;
|
||||
|
||||
padding-right: 20px;
|
||||
|
||||
box-sizing: border-box;
|
||||
|
||||
${NoUserSelect}
|
||||
|
||||
display: grid;
|
||||
align-items: center;
|
||||
|
||||
/* width: calc(100vw - 296px);
|
||||
max-width: calc(100vw - 296px); */
|
||||
|
||||
width: ${(props) =>
|
||||
props.infoPanelIsVisible ? "calc(100vw - 696px)" : "calc(100vw - 296px)"};
|
||||
max-width: ${(props) =>
|
||||
props.infoPanelIsVisible ? "calc(100vw - 696px)" : "calc(100vw - 296px)"};
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
|
||||
@media ${tablet} {
|
||||
width: ${(props) =>
|
||||
props.showText ? "calc(100vw - 272px)" : "calc(100vw - 84px)"};
|
||||
max-width: ${(props) =>
|
||||
props.showText ? "calc(100vw - 272px)" : "calc(100vw - 84px)"};
|
||||
height: 61px;
|
||||
min-height: 61px;
|
||||
margin-right: 0px !important;
|
||||
padding-right: 16px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
${isMobile &&
|
||||
css`
|
||||
width: ${(props) =>
|
||||
props.showText ? "calc(100vw - 272px)" : "calc(100vw - 84px)"} !important;
|
||||
max-width: ${(props) =>
|
||||
props.showText ? "calc(100vw - 272px)" : "calc(100vw - 84px)"} !important;
|
||||
height: 61px !important;
|
||||
min-height: 61px !important;
|
||||
margin-right: 0px !important;
|
||||
padding-right: 0 !important;
|
||||
margin-right: -16px !important;
|
||||
`}
|
||||
|
||||
@media ${mobile} {
|
||||
width: calc(100vw - 32px) !important;
|
||||
max-width: calc(100vw - 32px) !important;
|
||||
height: 53px;
|
||||
min-height: 53px;
|
||||
margin-right: 0px !important;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
${isMobileOnly &&
|
||||
css`
|
||||
width: calc(100vw - 32px) !important;
|
||||
max-width: calc(100vw - 32px) !important;
|
||||
height: 53px;
|
||||
min-height: 53px;
|
||||
margin-top: -2px;
|
||||
margin-right: 0px !important;
|
||||
width: 100vw !important;
|
||||
max-width: 100vw !important;
|
||||
|
||||
padding-right: 16px !important;
|
||||
|
||||
margin-top: -2px !important;
|
||||
`}
|
||||
`;
|
||||
|
||||
|
@ -52,13 +52,6 @@ class AuthStore {
|
||||
this.userStore.user && requests.push(this.moduleStore.init());
|
||||
}
|
||||
|
||||
if (this.isAuthenticated) {
|
||||
this.settingsStore.getPortalPasswordSettings();
|
||||
this.tfaStore.getTfaType();
|
||||
this.settingsStore.getIpRestrictions();
|
||||
this.settingsStore.getSessionLifetime();
|
||||
}
|
||||
|
||||
return Promise.all(requests);
|
||||
};
|
||||
setLanguage() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import api from "../api";
|
||||
import { ARTICLE_PINNED_KEY, LANGUAGE, TenantStatus } from "../constants";
|
||||
import { LANGUAGE, TenantStatus } from "../constants";
|
||||
import { combineUrl } from "../utils";
|
||||
import FirebaseHelper from "../utils/firebase";
|
||||
import { AppServerConfig } from "../constants";
|
||||
@ -455,8 +455,8 @@ class SettingsStore {
|
||||
|
||||
getIpRestrictions = async () => {
|
||||
const res = await api.settings.getIpRestrictions();
|
||||
if (res.length === 0) this.ipRestrictionEnabled = false;
|
||||
else this.ipRestrictionEnabled = true;
|
||||
this.ipRestrictions = res?.map((el) => el.ip);
|
||||
console.log(this.ipRestrictions);
|
||||
};
|
||||
|
||||
setIpRestrictions = async (ips) => {
|
||||
@ -464,8 +464,12 @@ class SettingsStore {
|
||||
ips: ips,
|
||||
};
|
||||
const res = await api.settings.setIpRestrictions(data);
|
||||
console.log("setIpRestrictions", res);
|
||||
this.ipRestrictions = ips;
|
||||
this.ipRestrictions = res;
|
||||
};
|
||||
|
||||
getIpRestrictionsEnable = async () => {
|
||||
const res = await api.settings.getIpRestrictionsEnable();
|
||||
this.ipRestrictionEnable = res.enable;
|
||||
};
|
||||
|
||||
setIpRestrictionsEnable = async (enable) => {
|
||||
@ -473,8 +477,7 @@ class SettingsStore {
|
||||
enable: enable,
|
||||
};
|
||||
const res = await api.settings.setIpRestrictionsEnable(data);
|
||||
console.log("setIpRestrictionsEnable", res);
|
||||
this.ipRestrictionEnabled = enable;
|
||||
this.ipRestrictionEnable = res.enable;
|
||||
};
|
||||
|
||||
setMessageSettings = async (turnOn) => {
|
||||
|
@ -57,7 +57,7 @@ const Avatar = (props) => {
|
||||
const { size, source, userName, role, editing, editAction } = props;
|
||||
let isDefault = false;
|
||||
|
||||
if (source.includes("default_user_photo")) isDefault = true;
|
||||
if (source?.includes("default_user_photo")) isDefault = true;
|
||||
|
||||
const avatarContent = source ? (
|
||||
<StyledImage src={source} isDefault={isDefault} />
|
||||
|
@ -81,7 +81,7 @@ const tabletButtons = css`
|
||||
|
||||
.save-button,
|
||||
.cancel-button {
|
||||
max-width: max-content;
|
||||
width: auto;
|
||||
padding-left: 28px;
|
||||
padding-right: 28px;
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ const StyledSearchInput = styled.div`
|
||||
font-style: normal;
|
||||
|
||||
.search-input-block {
|
||||
max-height: 32px;
|
||||
|
||||
& > input {
|
||||
font-size: ${(props) => props.theme.searchInput.fontSize};
|
||||
font-weight: ${(props) => props.theme.searchInput.fontWeight};
|
||||
|
@ -157,6 +157,8 @@ const StyledInfoPanelToggleWrapper = styled.div`
|
||||
? props.theme.infoPanel.sectionHeaderToggleIconActive
|
||||
: props.theme.infoPanel.sectionHeaderToggleIcon};
|
||||
}
|
||||
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
`;
|
||||
StyledInfoPanelToggleWrapper.defaultProps = { theme: Base };
|
||||
@ -199,6 +201,8 @@ const StyledTableHeaderCell = styled.div`
|
||||
`}
|
||||
|
||||
svg {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
path {
|
||||
fill: ${(props) =>
|
||||
props.isActive
|
||||
|
@ -62,7 +62,7 @@ const TableGroupMenu = (props) => {
|
||||
<div className="info-panel-toggle-bg">
|
||||
<IconButton
|
||||
className="info-panel-toggle"
|
||||
iconName="images/panel.svg"
|
||||
iconName="images/panel.react.svg"
|
||||
size="16"
|
||||
isFill={true}
|
||||
onClick={toggleInfoPanel}
|
||||
|
@ -1950,7 +1950,7 @@ const Dark = {
|
||||
|
||||
header: {
|
||||
backgroundColor: black,
|
||||
background: `linear-gradient(180deg,#333333 2.81%,rgba(51, 51, 51, 0.91) 63.03%,rgba(255, 255, 255, 0) 100%)`,
|
||||
background: `linear-gradient(180deg, #333333 2.81%, rgba(51, 51, 51, 0.9) 63.03%, rgba(51, 51, 51, 0) 100%);`,
|
||||
},
|
||||
},
|
||||
|
||||
|
3
products/ASC.Files/Client/public/images/panel.react.svg
Normal file
3
products/ASC.Files/Client/public/images/panel.react.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 3.5C0 2.67157 0.671573 2 1.5 2H14.5C15.3284 2 16 2.67157 16 3.5V12.5C16 13.3284 15.3284 14 14.5 14H1.5C0.671573 14 0 13.3284 0 12.5V3.5ZM2 5C2 4.44772 2.44772 4 3 4H9V12H3C2.44772 12 2 11.5523 2 11V5ZM11 12H13C13.5523 12 14 11.5523 14 11V5C14 4.44772 13.5523 4 13 4H11V12Z" fill="#A3A9AE"/>
|
||||
</svg>
|
After Width: | Height: | Size: 446 B |
@ -1,3 +0,0 @@
|
||||
<svg width="17" height="15" viewBox="0 0 17 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 2.5H13.5C14.0523 2.5 14.5 2.94772 14.5 3.5V11.5C14.5 12.0523 14.0523 12.5 13.5 12.5H11.5V2.5ZM9 2.5H3.5C2.94772 2.5 2.5 2.94772 2.5 3.5V11.5C2.5 12.0523 2.94772 12.5 3.5 12.5H9V2.5ZM17 1.5C17 0.671573 16.3284 0 15.5 0H14.5H2.5H1.5C0.671573 0 0 0.671573 0 1.5V2.88462V12.1154V13.5C0 14.3284 0.671573 15 1.5 15H2.5H14.5H15.5C16.3284 15 17 14.3284 17 13.5V12.1154V2.88462V1.5Z" fill="#A3A9AE"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 550 B |
@ -37,7 +37,6 @@ const withHotkeys = (Component) => {
|
||||
activateHotkeys,
|
||||
backToParentFolder,
|
||||
|
||||
hideArticle,
|
||||
uploadFile,
|
||||
someDialogIsOpen,
|
||||
} = props;
|
||||
@ -147,10 +146,7 @@ const withHotkeys = (Component) => {
|
||||
//Crete form template from file
|
||||
useHotkeys(
|
||||
"Alt+Shift+o",
|
||||
() => {
|
||||
hideArticle();
|
||||
setSelectFileDialogVisible(true);
|
||||
},
|
||||
() => setSelectFileDialogVisible(true),
|
||||
hotkeysFilter
|
||||
);
|
||||
|
||||
@ -217,14 +213,12 @@ const withHotkeys = (Component) => {
|
||||
|
||||
return inject(
|
||||
({
|
||||
auth,
|
||||
filesStore,
|
||||
dialogsStore,
|
||||
settingsStore,
|
||||
filesActionsStore,
|
||||
hotkeyStore,
|
||||
}) => {
|
||||
const { hideArticle } = auth.settingsStore;
|
||||
const { setSelected, viewAs, setViewAs, fileActionStore } = filesStore;
|
||||
const { setAction } = fileActionStore;
|
||||
|
||||
@ -291,7 +285,6 @@ const withHotkeys = (Component) => {
|
||||
activateHotkeys,
|
||||
backToParentFolder,
|
||||
|
||||
hideArticle,
|
||||
uploadFile,
|
||||
someDialogIsOpen,
|
||||
};
|
||||
|
@ -142,7 +142,6 @@ export default inject(
|
||||
|
||||
toggleArticleOpen,
|
||||
personal,
|
||||
hideArticle,
|
||||
isDesktopClient,
|
||||
FirebaseHelper,
|
||||
theme,
|
||||
@ -171,7 +170,6 @@ export default inject(
|
||||
|
||||
setTreeFolders,
|
||||
setNewFilesPanelVisible,
|
||||
hideArticle,
|
||||
firstLoad,
|
||||
isDesktopClient,
|
||||
FirebaseHelper,
|
||||
|
@ -116,7 +116,11 @@ const StyledTile = styled.div`
|
||||
}
|
||||
|
||||
.tile-folder-loader {
|
||||
padding-top: 4px;
|
||||
padding-top: 16px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin-left: 21px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
:hover {
|
||||
@ -180,8 +184,11 @@ const StyledFileTileBottom = styled.div`
|
||||
box-sizing: border-box;
|
||||
|
||||
.tile-file-loader {
|
||||
padding-top: 4px;
|
||||
padding-left: 3px;
|
||||
padding-top: 16px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin-left: 23px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
`;
|
||||
|
||||
|
@ -63,7 +63,7 @@ class ContextOptionsStore {
|
||||
const {
|
||||
setConvertPasswordDialogVisible,
|
||||
setFormCreationInfo,
|
||||
} = dialogsStore;
|
||||
} = this.dialogsStore;
|
||||
const { title, id, folderId, fileExst } = item;
|
||||
|
||||
const newTitle =
|
||||
@ -412,7 +412,7 @@ class ContextOptionsStore {
|
||||
},
|
||||
{
|
||||
key: "copy",
|
||||
label: t("Duplicate"),
|
||||
label: t("Common:Duplicate"),
|
||||
onClick: () => this.onDuplicate(item, t),
|
||||
disabled: false,
|
||||
},
|
||||
@ -436,7 +436,7 @@ class ContextOptionsStore {
|
||||
},
|
||||
{
|
||||
key: "copy",
|
||||
label: t("Duplicate"),
|
||||
label: t("Common:Duplicate"),
|
||||
icon: "/static/images/copy.react.svg",
|
||||
onClick: () => this.onDuplicate(item, t),
|
||||
disabled: false,
|
||||
|
@ -153,7 +153,6 @@ class DialogsStore {
|
||||
this.setNewFilesIds(null);
|
||||
}
|
||||
|
||||
this.authStore.settingsStore.hideArticle();
|
||||
this.newFilesPanelVisible = newFilesPanelVisible;
|
||||
};
|
||||
|
||||
|
@ -49,7 +49,7 @@ class HotkeyStore {
|
||||
|
||||
if (!hotkeyCaret) {
|
||||
const scroll = document.getElementsByClassName("section-scroll");
|
||||
scroll && scroll[0].focus();
|
||||
scroll && scroll[0] && scroll[0].focus();
|
||||
}
|
||||
|
||||
if (!hotkeyCaret && selection.length) {
|
||||
@ -129,26 +129,31 @@ class HotkeyStore {
|
||||
};
|
||||
|
||||
selectBottom = () => {
|
||||
const { viewAs, hotkeyCaret } = this.filesStore;
|
||||
const { viewAs, hotkeyCaret, selection } = this.filesStore;
|
||||
|
||||
if (!hotkeyCaret) return this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) return this.selectFirstFile();
|
||||
else if (viewAs === "tile")
|
||||
this.setSelectionWithCaret([this.nextForTileDown]);
|
||||
else if (this.nextFile) this.setSelectionWithCaret([this.nextFile]);
|
||||
};
|
||||
|
||||
selectUpper = () => {
|
||||
const { hotkeyCaret, viewAs } = this.filesStore;
|
||||
const { hotkeyCaret, viewAs, selection } = this.filesStore;
|
||||
|
||||
if (!hotkeyCaret) return this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) return this.selectFirstFile();
|
||||
else if (viewAs === "tile")
|
||||
this.setSelectionWithCaret([this.prevForTileUp]);
|
||||
else if (this.prevFile) this.setSelectionWithCaret([this.prevFile]);
|
||||
};
|
||||
|
||||
selectLeft = () => {
|
||||
const { hotkeyCaret, filesList, setHotkeyCaretStart } = this.filesStore;
|
||||
if (!hotkeyCaret) {
|
||||
const {
|
||||
hotkeyCaret,
|
||||
filesList,
|
||||
setHotkeyCaretStart,
|
||||
selection,
|
||||
} = this.filesStore;
|
||||
if (!hotkeyCaret && !selection.length) {
|
||||
this.selectFirstFile();
|
||||
|
||||
setHotkeyCaretStart(filesList[0]);
|
||||
@ -158,9 +163,14 @@ class HotkeyStore {
|
||||
};
|
||||
|
||||
selectRight = () => {
|
||||
const { hotkeyCaret, filesList, setHotkeyCaretStart } = this.filesStore;
|
||||
const {
|
||||
hotkeyCaret,
|
||||
filesList,
|
||||
setHotkeyCaretStart,
|
||||
selection,
|
||||
} = this.filesStore;
|
||||
|
||||
if (!hotkeyCaret) {
|
||||
if (!hotkeyCaret && !selection.length) {
|
||||
this.selectFirstFile();
|
||||
setHotkeyCaretStart(filesList[0]);
|
||||
} else if (this.nextFile) {
|
||||
@ -183,7 +193,7 @@ class HotkeyStore {
|
||||
if (!hotkeyCaretStart) {
|
||||
setHotkeyCaretStart(hotkeyCaret);
|
||||
}
|
||||
if (!hotkeyCaret) return this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) return this.selectFirstFile();
|
||||
|
||||
if (viewAs === "tile") {
|
||||
if (this.nextForTileDown.id === hotkeyCaret.id) return;
|
||||
@ -218,7 +228,7 @@ class HotkeyStore {
|
||||
if (!hotkeyCaretStart) {
|
||||
setHotkeyCaretStart(hotkeyCaret);
|
||||
}
|
||||
if (!hotkeyCaret) this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) this.selectFirstFile();
|
||||
|
||||
if (viewAs === "tile") {
|
||||
if (this.prevForTileUp.id === hotkeyCaret.id) return;
|
||||
@ -251,7 +261,7 @@ class HotkeyStore {
|
||||
filesList,
|
||||
} = this.filesStore;
|
||||
|
||||
if (!hotkeyCaret) return this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) return this.selectFirstFile();
|
||||
|
||||
const nextFile = this.nextFile;
|
||||
if (!nextFile) return;
|
||||
@ -309,7 +319,7 @@ class HotkeyStore {
|
||||
hotkeyCaretStart,
|
||||
} = this.filesStore;
|
||||
|
||||
if (!hotkeyCaret) return this.selectFirstFile();
|
||||
if (!hotkeyCaret && !selection.length) return this.selectFirstFile();
|
||||
|
||||
const prevFile = this.prevFile;
|
||||
if (!prevFile) return;
|
||||
@ -461,8 +471,9 @@ class HotkeyStore {
|
||||
}
|
||||
|
||||
get caretIndex() {
|
||||
const { filesList, hotkeyCaret } = this.filesStore;
|
||||
const caretIndex = filesList.findIndex((f) => f.id === hotkeyCaret.id);
|
||||
const { filesList, hotkeyCaret, selection } = this.filesStore;
|
||||
const id = selection.length ? selection[0].id : hotkeyCaret?.id;
|
||||
const caretIndex = filesList.findIndex((f) => f.id === id);
|
||||
|
||||
if (caretIndex !== -1) return caretIndex;
|
||||
else return null;
|
||||
|
@ -1405,6 +1405,13 @@ namespace ASC.Api.Settings
|
||||
return IPRestrictionsService.Save(model.Ips, Tenant.TenantId);
|
||||
}
|
||||
|
||||
[Read("iprestrictions/settings")]
|
||||
public IPRestrictionsSettings GetIpRestrictionsSettings()
|
||||
{
|
||||
PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
|
||||
return SettingsManager.Load<IPRestrictionsSettings>();
|
||||
}
|
||||
|
||||
[Update("iprestrictions/settings")]
|
||||
public IPRestrictionsSettings UpdateIpRestrictionsSettingsFromBody([FromBody] IpRestrictionsModel model)
|
||||
{
|
||||
|
@ -578,6 +578,7 @@ const ShellWrapper = inject(({ auth, backup }) => {
|
||||
setTheme,
|
||||
} = settingsStore;
|
||||
const { setPreparationPortalDialogVisible } = backup;
|
||||
|
||||
return {
|
||||
loadBaseInfo: async () => {
|
||||
await init();
|
||||
|
@ -6,6 +6,10 @@ import { withTranslation } from "react-i18next";
|
||||
|
||||
import { isArrayEqual } from "@appserver/components/utils/array";
|
||||
|
||||
import { isMobileOnly } from "react-device-detect";
|
||||
|
||||
import { isMobile } from "@appserver/components/utils/device";
|
||||
|
||||
import {
|
||||
//getKeyByLink,
|
||||
settingsTree,
|
||||
@ -55,7 +59,7 @@ class ArticleBodyContent extends React.Component {
|
||||
componentDidUpdate(prevProps, prevState) {
|
||||
if (!isArrayEqual(prevState.selectedKeys, this.state.selectedKeys)) {
|
||||
const { selectedKeys } = this.state;
|
||||
console.log(selectedKeys);
|
||||
|
||||
const { match, history } = this.props;
|
||||
const settingsPath = getSelectedLinkByKey(selectedKeys[0], settingsTree);
|
||||
const newPath = match.path + settingsPath;
|
||||
@ -66,13 +70,17 @@ class ArticleBodyContent extends React.Component {
|
||||
onSelect = (value) => {
|
||||
const { selectedKeys } = this.state;
|
||||
|
||||
console.log(selectedKeys, value);
|
||||
const { toggleArticleOpen } = this.props;
|
||||
|
||||
if (isArrayEqual([value], selectedKeys)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.setState({ selectedKeys: [value + "-0"] });
|
||||
|
||||
if (isMobileOnly || isMobile()) {
|
||||
toggleArticleOpen();
|
||||
}
|
||||
};
|
||||
|
||||
mapKeys = (tKey) => {
|
||||
@ -145,5 +153,6 @@ class ArticleBodyContent extends React.Component {
|
||||
export default inject(({ auth }) => {
|
||||
return {
|
||||
showText: auth.settingsStore.showText,
|
||||
toggleArticleOpen: auth.settingsStore.toggleArticleOpen,
|
||||
};
|
||||
})(withRouter(withTranslation("Settings")(observer(ArticleBodyContent))));
|
||||
|
@ -110,8 +110,9 @@ class SectionHeaderContent extends React.Component {
|
||||
const resultPath = locationPathname.slice(fullSettingsUrlLength + 1);
|
||||
const arrayOfParams = resultPath.split("/");
|
||||
|
||||
const key = getKeyByLink(arrayOfParams, settingsTree)[0];
|
||||
const header = getTKeyByKey(key, settingsTree);
|
||||
const key = getKeyByLink(arrayOfParams, settingsTree);
|
||||
const currKey = key.length > 3 ? key : key[0];
|
||||
const header = getTKeyByKey(currKey, settingsTree);
|
||||
const isCategory = checkPropertyByLink(
|
||||
arrayOfParams,
|
||||
settingsTree,
|
||||
@ -133,8 +134,9 @@ class SectionHeaderContent extends React.Component {
|
||||
componentDidUpdate() {
|
||||
const arrayOfParams = this.getArrayOfParams();
|
||||
|
||||
const key = getKeyByLink(arrayOfParams, settingsTree)[0];
|
||||
const header = getTKeyByKey(key, settingsTree);
|
||||
const key = getKeyByLink(arrayOfParams, settingsTree);
|
||||
const currKey = key.length > 3 ? key : key[0];
|
||||
const header = getTKeyByKey(currKey, settingsTree);
|
||||
const isCategory = checkPropertyByLink(
|
||||
arrayOfParams,
|
||||
settingsTree,
|
||||
|
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import styled, { css } from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
import { isDesktop as isDesktopUtils } from "@appserver/components/utils/device";
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
const tabletStyles = css`
|
||||
padding-top: 12px;
|
||||
.loader {
|
||||
width: 184px;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
padding-top: 8px;
|
||||
|
||||
.loader {
|
||||
width: 273px;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
${tabletStyles}
|
||||
}
|
||||
|
||||
${isTablet &&
|
||||
css`
|
||||
${tabletStyles}
|
||||
`}
|
||||
|
||||
@media (min-width: 1025px) {
|
||||
.loader {
|
||||
width: 296px;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const LoaderSectionHeader = () => {
|
||||
const heightLoader = isDesktopUtils() ? "29px" : "37px";
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle height={heightLoader} className="loader" />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderSectionHeader;
|
@ -4,6 +4,7 @@ import { ArticleHeaderContent, ArticleBodyContent } from "./Article";
|
||||
import { SectionHeaderContent, SectionPagingContent } from "./Section";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import Section from "@appserver/common/components/Section";
|
||||
import LoaderSectionHeader from "./Section/loaderSectionHeader";
|
||||
|
||||
const ArticleSettings = React.memo(() => {
|
||||
return (
|
||||
|
@ -10,6 +10,7 @@ import { AppServerConfig } from "@appserver/common/constants";
|
||||
import withCultureNames from "@appserver/common/hoc/withCultureNames";
|
||||
import history from "@appserver/common/history";
|
||||
import { Base } from "@appserver/components/themes";
|
||||
import LoaderCustomizationNavbar from "./sub-components/loaderCustomizationNavbar";
|
||||
|
||||
import { StyledArrowRightIcon } from "../common/settingsCustomization/StyledSettings";
|
||||
|
||||
@ -51,6 +52,9 @@ const CustomizationNavbar = ({ t, theme, helpUrlCommonSettings }) => {
|
||||
e.preventDefault();
|
||||
history.push(e.target.pathname);
|
||||
};
|
||||
|
||||
//return <LoaderCustomizationNavbar />;
|
||||
|
||||
return (
|
||||
<StyledComponent>
|
||||
<div className="category-item-wrapper">
|
||||
|
@ -1,6 +1,7 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import styled from "styled-components";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import withCultureNames from "@appserver/common/hoc/withCultureNames";
|
||||
import LanguageAndTimeZone from "./settingsCustomization/language-and-time-zone";
|
||||
import WelcomePageSettings from "./settingsCustomization/welcome-page-settings";
|
||||
@ -9,8 +10,11 @@ import { isSmallTablet } from "@appserver/components/utils/device";
|
||||
import CustomizationNavbar from "./customization-navbar";
|
||||
import { Base } from "@appserver/components/themes";
|
||||
import { setDocumentTitle } from "../../../../../helpers/utils";
|
||||
import LoaderDescriptionCustomization from "./sub-components/loaderDescriptionCustomization";
|
||||
|
||||
const StyledComponent = styled.div`
|
||||
width: 100%;
|
||||
|
||||
.combo-button-label {
|
||||
max-width: 100%;
|
||||
}
|
||||
@ -61,9 +65,9 @@ const StyledComponent = styled.div`
|
||||
|
||||
StyledComponent.defaultProps = { theme: Base };
|
||||
|
||||
const Customization = ({ t }) => {
|
||||
const Customization = ({ t, setIsLoadingArticleSettings }) => {
|
||||
const [mobileView, setMobileView] = useState(true);
|
||||
const [isLoadingCustomization, setIsLoadingCustomization] = useState(true);
|
||||
const [isLoadingCustomization, setIsLoadingCustomization] = useState(false);
|
||||
|
||||
const checkInnerWidth = () => {
|
||||
if (isSmallTablet()) {
|
||||
@ -75,8 +79,12 @@ const Customization = ({ t }) => {
|
||||
|
||||
useEffect(() => {
|
||||
setDocumentTitle(t("Customization"));
|
||||
//TODO: add method to get the portal name
|
||||
//TODO: Add method to get the portal name
|
||||
setIsLoadingArticleSettings(true);
|
||||
setTimeout(() => {
|
||||
setIsLoadingCustomization(false);
|
||||
setIsLoadingArticleSettings(isLoadingCustomization);
|
||||
}, 3000);
|
||||
|
||||
window.addEventListener("resize", checkInnerWidth);
|
||||
return () => window.removeEventListener("resize", checkInnerWidth);
|
||||
@ -91,6 +99,7 @@ const Customization = ({ t }) => {
|
||||
<div className="category-description">{`${t(
|
||||
"Settings:CustomizationDescription"
|
||||
)}`}</div>
|
||||
{/* <LoaderDescriptionCustomization /> */}
|
||||
<LanguageAndTimeZone
|
||||
isLoadingCustomization={isLoadingCustomization}
|
||||
isMobileView={isMobile}
|
||||
@ -101,6 +110,14 @@ const Customization = ({ t }) => {
|
||||
);
|
||||
};
|
||||
|
||||
export default withCultureNames(
|
||||
withTranslation(["Settings", "Common"])(Customization)
|
||||
export default inject(({ setup }) => {
|
||||
const { setIsLoadingArticleSettings } = setup;
|
||||
|
||||
return {
|
||||
setIsLoadingArticleSettings,
|
||||
};
|
||||
})(
|
||||
withCultureNames(
|
||||
withTranslation(["Settings", "Common"])(observer(Customization))
|
||||
)
|
||||
);
|
||||
|
@ -8,7 +8,7 @@ import config from "../../../../../../package.json";
|
||||
|
||||
import Customization from "./customization";
|
||||
import WhiteLabel from "./whitelabel";
|
||||
import AppLoader from "@appserver/common/components/AppLoader";
|
||||
import LoaderSubmenu from "./sub-components/loaderSubmenu";
|
||||
|
||||
const SubmenuCommon = (props) => {
|
||||
const { t, history } = props;
|
||||
@ -34,7 +34,7 @@ const SubmenuCommon = (props) => {
|
||||
if (currentTab !== -1) {
|
||||
setCurrentTab(currentTab);
|
||||
}
|
||||
setIsLoading(true);
|
||||
//setIsLoading(true);
|
||||
}, []);
|
||||
|
||||
const onSelect = (e) => {
|
||||
@ -46,9 +46,9 @@ const SubmenuCommon = (props) => {
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
return !isLoading ? (
|
||||
<AppLoader />
|
||||
//TODO: isLoading
|
||||
return isLoading ? (
|
||||
<LoaderSubmenu />
|
||||
) : (
|
||||
<Submenu
|
||||
data={data}
|
||||
|
@ -22,7 +22,7 @@ import { isMobileOnly } from "react-device-detect";
|
||||
import { isSmallTablet } from "@appserver/components/utils/device";
|
||||
import checkScrollSettingsBlock from "../utils";
|
||||
import { StyledSettingsComponent, StyledScrollbar } from "./StyledSettings";
|
||||
import LoaderLngTZSettings from "../sub-components/loaderLngTZSettings";
|
||||
import LoaderCustomization from "../sub-components/loaderCustomization";
|
||||
const mapTimezonesToArray = (timezones) => {
|
||||
return timezones.map((timezone) => {
|
||||
return { key: timezone.id, label: timezone.displayName };
|
||||
@ -399,6 +399,7 @@ class LanguageAndTimeZone extends React.Component {
|
||||
</div>
|
||||
);
|
||||
|
||||
//return <LoaderCustomization lngTZSettings={true} />;
|
||||
return !isLoadedData ? (
|
||||
<Loader className="pageLoader" type="rombs" size="40px" />
|
||||
) : (
|
||||
|
@ -18,6 +18,7 @@ import { PortalRenamingTooltip } from "../sub-components/common-tooltips";
|
||||
import { StyledSettingsComponent, StyledScrollbar } from "./StyledSettings";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import { setDocumentTitle } from "../../../../../../helpers/utils";
|
||||
import LoaderCustomization from "../sub-components/loaderCustomization";
|
||||
|
||||
const PortalRenaming = ({ t, setPortalRename, isMobileView }) => {
|
||||
// TODO: Change false
|
||||
@ -186,6 +187,7 @@ const PortalRenaming = ({ t, setPortalRename, isMobileView }) => {
|
||||
</div>
|
||||
);
|
||||
|
||||
//return <LoaderCustomization portalRenaming={true} />;
|
||||
return !isLoadedData ? (
|
||||
<Loader className="pageLoader" type="rombs" size="40px" />
|
||||
) : (
|
||||
|
@ -19,7 +19,7 @@ import { isMobileOnly } from "react-device-detect";
|
||||
import { isSmallTablet } from "@appserver/components/utils/device";
|
||||
import checkScrollSettingsBlock from "../utils";
|
||||
import { StyledSettingsComponent, StyledScrollbar } from "./StyledSettings";
|
||||
import LoaderLngTZSettings from "../sub-components/loaderLngTZSettings";
|
||||
import LoaderCustomization from "../sub-components/loaderCustomization";
|
||||
|
||||
let greetingTitleFromSessionStorage = "";
|
||||
let greetingTitleDefaultFromSessionStorage = "";
|
||||
@ -250,6 +250,7 @@ class WelcomePageSettings extends React.Component {
|
||||
</div>
|
||||
);
|
||||
|
||||
// return <LoaderCustomization welcomePage={true} />;
|
||||
return !isLoadedData ? (
|
||||
<Loader className="pageLoader" type="rombs" size="40px" />
|
||||
) : (
|
||||
|
@ -0,0 +1,143 @@
|
||||
import React from "react";
|
||||
import styled, { css } from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
const tabletStyles = css`
|
||||
.header {
|
||||
display: block;
|
||||
width: ${(props) =>
|
||||
props.lngTZSettings
|
||||
? "283px"
|
||||
: props.welcomePage
|
||||
? "201px"
|
||||
: props.portalRenaming
|
||||
? "150px"
|
||||
: 0};
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
.description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
width: ${(props) =>
|
||||
props.lngTZSettings
|
||||
? "65px"
|
||||
: props.welcomePage
|
||||
? "31px"
|
||||
: props.portalRenaming
|
||||
? "113px"
|
||||
: 0};
|
||||
}
|
||||
|
||||
.combo-box {
|
||||
display: block;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.field-container {
|
||||
display: block;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.save-cancel-buttons {
|
||||
display: block;
|
||||
position: static;
|
||||
width: 350px;
|
||||
padding: 0;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
.header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.description {
|
||||
width: 100%;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.title {
|
||||
width: ${(props) => (props.portalRenaming ? "49px" : "63.7px")};
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.title-long {
|
||||
display: block;
|
||||
width: 68px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.combo-box {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-bottom: 24px;
|
||||
}
|
||||
|
||||
.field-container {
|
||||
width: 100%;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.save-cancel-buttons {
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: calc(100% - 32px);
|
||||
padding: 0 0 16px 16px;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
${tabletStyles}
|
||||
}
|
||||
|
||||
${isTablet &&
|
||||
`
|
||||
${tabletStyles}
|
||||
`}
|
||||
`;
|
||||
|
||||
const LoaderCustomization = ({
|
||||
lngTZSettings,
|
||||
portalRenaming,
|
||||
welcomePage,
|
||||
}) => {
|
||||
const heightSaveCancelButtons = window.innerWidth < 600 ? "40px" : "32px";
|
||||
|
||||
return (
|
||||
<StyledLoader
|
||||
lngTZSettings={lngTZSettings}
|
||||
portalRenaming={portalRenaming}
|
||||
welcomePage={welcomePage}
|
||||
className="category-item-wrapper"
|
||||
>
|
||||
<Loaders.Rectangle height="22px" className="header" />
|
||||
|
||||
{portalRenaming && (
|
||||
<Loaders.Rectangle height="80px" className="description" />
|
||||
)}
|
||||
|
||||
<Loaders.Rectangle height="20px" className="title" />
|
||||
<Loaders.Rectangle height="32px" className="combo-box" />
|
||||
{lngTZSettings && (
|
||||
<>
|
||||
<Loaders.Rectangle height="20px" className="field-container" />
|
||||
<Loaders.Rectangle height="20px" className="title-long" />
|
||||
<Loaders.Rectangle height="32px" className="combo-box" />
|
||||
</>
|
||||
)}
|
||||
<Loaders.Rectangle
|
||||
height={heightSaveCancelButtons}
|
||||
className="save-cancel-buttons"
|
||||
/>
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderCustomization;
|
@ -0,0 +1,44 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
.title-long {
|
||||
width: 283px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.width {
|
||||
width: 100%;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.link {
|
||||
width: 57px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
width: 132px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
`;
|
||||
|
||||
const LoaderCustomizationNavbar = () => {
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle height="22px" className="title-long" />
|
||||
<Loaders.Rectangle height="100px" className="width" />
|
||||
<Loaders.Rectangle height="20px" className="link" />
|
||||
|
||||
<Loaders.Rectangle height="22px" className="title" />
|
||||
<Loaders.Rectangle height="80px" className="width" />
|
||||
|
||||
<Loaders.Rectangle height="22px" className="title" />
|
||||
<Loaders.Rectangle height="20px" className="width" />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderCustomizationNavbar;
|
@ -0,0 +1,38 @@
|
||||
import React from "react";
|
||||
import styled, { css } from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
const tabletStyles = css`
|
||||
.description {
|
||||
width: 684px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
@media (min-width: 600px) {
|
||||
${tabletStyles}
|
||||
}
|
||||
|
||||
${isTablet &&
|
||||
css`
|
||||
${tabletStyles}
|
||||
`}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.description {
|
||||
width: 700px;
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const LoaderDescriptionCustomization = () => {
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle height="40px" className="description" />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderDescriptionCustomization;
|
@ -1,15 +0,0 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
|
||||
const StyledLoader = styled.div``;
|
||||
|
||||
const LoaderLngTZSettings = () => {
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderLngTZSettings;
|
@ -0,0 +1,32 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import Loaders from "@appserver/common/components/Loaders";
|
||||
import { isTablet } from "react-device-detect";
|
||||
|
||||
const StyledLoader = styled.div`
|
||||
margin-top: -4px;
|
||||
|
||||
.loader {
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
margin-top: -9px;
|
||||
}
|
||||
|
||||
${isTablet &&
|
||||
css`
|
||||
margin-top: -9px;
|
||||
`}
|
||||
`;
|
||||
|
||||
const LoaderSubmenu = () => {
|
||||
return (
|
||||
<StyledLoader>
|
||||
<Loaders.Rectangle width="100px" height="28px" className="loader" />
|
||||
<Loaders.Rectangle width="100px" height="28px" />
|
||||
</StyledLoader>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoaderSubmenu;
|
@ -308,7 +308,6 @@ class WhiteLabel extends React.Component {
|
||||
<Loader className="pageLoader" type="rombs" size="40px" />
|
||||
) : (
|
||||
<>
|
||||
В разработке
|
||||
<StyledComponent>
|
||||
<div className="settings-block">
|
||||
<Text fontSize="16px">{t("LogoSettings")}</Text>
|
||||
|
@ -85,34 +85,6 @@ export const StyledMobileCategoryWrapper = styled.div`
|
||||
|
||||
StyledMobileCategoryWrapper.defaultProps = { theme: Base };
|
||||
|
||||
export const ButtonsWrapper = styled.div`
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin-top: 24px;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
position: absolute;
|
||||
bottom: 16px;
|
||||
width: calc(100vw - 84px);
|
||||
|
||||
.button {
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.reminder {
|
||||
position: absolute;
|
||||
bottom: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 430px) {
|
||||
width: calc(100vw - 32px);
|
||||
}
|
||||
`;
|
||||
|
||||
export const LearnMoreWrapper = styled.div`
|
||||
display: none;
|
||||
|
||||
|
@ -8,10 +8,10 @@ import Text from "@appserver/components/text";
|
||||
import Link from "@appserver/components/link";
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import { getLanguage } from "@appserver/common/utils";
|
||||
import Buttons from "../sub-components/buttons";
|
||||
import { LearnMoreWrapper } from "../StyledSecurity";
|
||||
import { size } from "@appserver/components/utils/device";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||
|
||||
const MainContainer = styled.div`
|
||||
width: 100%;
|
||||
@ -19,6 +19,10 @@ const MainContainer = styled.div`
|
||||
.page-subtitle {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.box {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
`;
|
||||
|
||||
const AdminMessage = (props) => {
|
||||
@ -133,11 +137,16 @@ const AdminMessage = (props) => {
|
||||
onClick={onSelectType}
|
||||
/>
|
||||
|
||||
<Buttons
|
||||
t={t}
|
||||
showReminder={showReminder}
|
||||
<SaveCancelButtons
|
||||
className="save-cancel-buttons"
|
||||
onSaveClick={onSaveClick}
|
||||
onCancelClick={onCancelClick}
|
||||
showReminder={showReminder}
|
||||
reminderTest={t("YouHaveUnsavedChanges")}
|
||||
saveButtonLabel={t("Common:SaveButton")}
|
||||
cancelButtonLabel={t("Common:CancelButton")}
|
||||
displaySettings={true}
|
||||
hasScroll={false}
|
||||
/>
|
||||
</MainContainer>
|
||||
);
|
||||
|
@ -8,10 +8,10 @@ import RadioButtonGroup from "@appserver/components/radio-button-group";
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import { LearnMoreWrapper } from "../StyledSecurity";
|
||||
import UserFields from "../sub-components/user-fields";
|
||||
import Buttons from "../sub-components/buttons";
|
||||
import { size } from "@appserver/components/utils/device";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||
|
||||
const MainContainer = styled.div`
|
||||
width: 100%;
|
||||
@ -31,19 +31,23 @@ const MainContainer = styled.div`
|
||||
.warning-text {
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.save-cancel-buttons {
|
||||
margin-top: 24px;
|
||||
}
|
||||
`;
|
||||
|
||||
const IpSecurity = (props) => {
|
||||
const {
|
||||
t,
|
||||
history,
|
||||
ipRestrictionEnabled,
|
||||
ipRestrictionEnable,
|
||||
setIpRestrictionsEnable,
|
||||
ipRestrictions,
|
||||
setIpRestrictions,
|
||||
} = props;
|
||||
|
||||
const regexp = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))|((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])/; //check ip valid
|
||||
const regexp = /^(?!0)(?!.*\.$)((1?\d?\d|25[0-5]|2[0-4]\d)(\.|$)){4}$/; //check ip valid
|
||||
|
||||
const [enable, setEnable] = useState(false);
|
||||
const [ips, setIps] = useState();
|
||||
@ -58,7 +62,7 @@ const IpSecurity = (props) => {
|
||||
saveToSessionStorage("defaultIPSettings", defaultSettings);
|
||||
} else {
|
||||
const defaultData = {
|
||||
enable: ipRestrictionEnabled,
|
||||
enable: ipRestrictionEnable,
|
||||
ips: ipRestrictions,
|
||||
};
|
||||
saveToSessionStorage("defaultIPSettings", defaultData);
|
||||
@ -68,7 +72,7 @@ const IpSecurity = (props) => {
|
||||
setEnable(currentSettings.enable);
|
||||
setIps(currentSettings.ips);
|
||||
} else {
|
||||
setEnable(ipRestrictionEnabled);
|
||||
setEnable(ipRestrictionEnable);
|
||||
setIps(ipRestrictions);
|
||||
}
|
||||
|
||||
@ -125,14 +129,15 @@ const IpSecurity = (props) => {
|
||||
setIps([...ips, ""]);
|
||||
};
|
||||
|
||||
const onSaveClick = () => {
|
||||
const onSaveClick = async () => {
|
||||
const valid = ips.map((ip) => regexp.test(ip));
|
||||
if (valid.includes(false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
setIpRestrictions(ips);
|
||||
setIpRestrictionsEnable(enable);
|
||||
try {
|
||||
await setIpRestrictions(ips);
|
||||
await setIpRestrictionsEnable(enable);
|
||||
|
||||
saveToSessionStorage("defaultIPSettings", {
|
||||
enable: enable,
|
||||
@ -140,6 +145,9 @@ const IpSecurity = (props) => {
|
||||
});
|
||||
setShowReminder(false);
|
||||
toastr.success(t("SuccessfullySaveSettingsMessage"));
|
||||
} catch (error) {
|
||||
toastr.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
const onCancelClick = () => {
|
||||
@ -188,6 +196,8 @@ const IpSecurity = (props) => {
|
||||
/>
|
||||
)}
|
||||
|
||||
{enable && (
|
||||
<>
|
||||
<Text
|
||||
color="#F21C0E"
|
||||
fontSize="16px"
|
||||
@ -197,12 +207,19 @@ const IpSecurity = (props) => {
|
||||
{t("Common:Warning")}!
|
||||
</Text>
|
||||
<Text>{t("IPSecurityWarningHelper")}</Text>
|
||||
</>
|
||||
)}
|
||||
|
||||
<Buttons
|
||||
t={t}
|
||||
showReminder={showReminder}
|
||||
<SaveCancelButtons
|
||||
className="save-cancel-buttons"
|
||||
onSaveClick={onSaveClick}
|
||||
onCancelClick={onCancelClick}
|
||||
showReminder={showReminder}
|
||||
reminderTest={t("YouHaveUnsavedChanges")}
|
||||
saveButtonLabel={t("Common:SaveButton")}
|
||||
cancelButtonLabel={t("Common:CancelButton")}
|
||||
displaySettings={true}
|
||||
hasScroll={false}
|
||||
/>
|
||||
</MainContainer>
|
||||
);
|
||||
@ -210,14 +227,14 @@ const IpSecurity = (props) => {
|
||||
|
||||
export default inject(({ auth }) => {
|
||||
const {
|
||||
ipRestrictionEnabled,
|
||||
ipRestrictionEnable,
|
||||
setIpRestrictionsEnable,
|
||||
ipRestrictions,
|
||||
setIpRestrictions,
|
||||
} = auth.settingsStore;
|
||||
|
||||
return {
|
||||
ipRestrictionEnabled,
|
||||
ipRestrictionEnable,
|
||||
setIpRestrictionsEnable,
|
||||
ipRestrictions,
|
||||
setIpRestrictions,
|
||||
|
@ -11,10 +11,10 @@ import Checkbox from "@appserver/components/checkbox";
|
||||
import { getLanguage } from "@appserver/common/utils";
|
||||
import { LearnMoreWrapper } from "../StyledSecurity";
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import Buttons from "../sub-components/buttons";
|
||||
import { size } from "@appserver/components/utils/device";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||
|
||||
const MainContainer = styled.div`
|
||||
width: 100%;
|
||||
@ -30,6 +30,7 @@ const MainContainer = styled.div`
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
margin-top: 18px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
`;
|
||||
|
||||
@ -216,11 +217,16 @@ const PasswordStrength = (props) => {
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<Buttons
|
||||
t={t}
|
||||
showReminder={showReminder}
|
||||
<SaveCancelButtons
|
||||
className="save-cancel-buttons"
|
||||
onSaveClick={onSaveClick}
|
||||
onCancelClick={onCancelClick}
|
||||
showReminder={showReminder}
|
||||
reminderTest={t("YouHaveUnsavedChanges")}
|
||||
saveButtonLabel={t("Common:SaveButton")}
|
||||
cancelButtonLabel={t("Common:CancelButton")}
|
||||
displaySettings={true}
|
||||
hasScroll={false}
|
||||
/>
|
||||
</MainContainer>
|
||||
);
|
||||
|
@ -8,13 +8,17 @@ import Text from "@appserver/components/text";
|
||||
import Link from "@appserver/components/link";
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import { getLanguage } from "@appserver/common/utils";
|
||||
import Buttons from "../sub-components/buttons";
|
||||
import { LearnMoreWrapper } from "../StyledSecurity";
|
||||
import { size } from "@appserver/components/utils/device";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||
|
||||
const MainContainer = styled.div`
|
||||
width: 100%;
|
||||
|
||||
.box {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
`;
|
||||
|
||||
const TwoFactorAuth = (props) => {
|
||||
@ -145,11 +149,16 @@ const TwoFactorAuth = (props) => {
|
||||
onClick={onSelectTfaType}
|
||||
/>
|
||||
|
||||
<Buttons
|
||||
t={t}
|
||||
showReminder={showReminder}
|
||||
<SaveCancelButtons
|
||||
className="save-cancel-buttons"
|
||||
onSaveClick={onSaveClick}
|
||||
onCancelClick={onCancelClick}
|
||||
showReminder={showReminder}
|
||||
reminderTest={t("YouHaveUnsavedChanges")}
|
||||
saveButtonLabel={t("Common:SaveButton")}
|
||||
cancelButtonLabel={t("Common:CancelButton")}
|
||||
displaySettings={true}
|
||||
hasScroll={false}
|
||||
/>
|
||||
</MainContainer>
|
||||
);
|
||||
|
@ -10,24 +10,20 @@ import { LearnMoreWrapper } from "../StyledSecurity";
|
||||
import { getLanguage } from "@appserver/common/utils";
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import UserFields from "../sub-components/user-fields";
|
||||
import Buttons from "../sub-components/buttons";
|
||||
import { size } from "@appserver/components/utils/device";
|
||||
import { saveToSessionStorage, getFromSessionStorage } from "../../../utils";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||
|
||||
const MainContainer = styled.div`
|
||||
width: 100%;
|
||||
|
||||
.user-fields {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.box {
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
.warning-text {
|
||||
margin-bottom: 9px;
|
||||
.save-cancel-buttons {
|
||||
margin-top: 24px;
|
||||
}
|
||||
`;
|
||||
|
||||
@ -45,9 +41,10 @@ const TrustedMail = (props) => {
|
||||
const [type, setType] = useState("0");
|
||||
const [domains, setDomains] = useState([]);
|
||||
const [showReminder, setShowReminder] = useState(false);
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
const getSettings = async () => {
|
||||
const getSettings = () => {
|
||||
const currentSettings = getFromSessionStorage("currentTrustedMailSettings");
|
||||
const defaultSettings = getFromSessionStorage("defaultTrustedMailSettings");
|
||||
|
||||
@ -68,7 +65,6 @@ const TrustedMail = (props) => {
|
||||
setType(String(trustedDomainsType));
|
||||
setDomains(trustedDomains);
|
||||
}
|
||||
|
||||
setIsLoading(true);
|
||||
};
|
||||
|
||||
@ -81,7 +77,6 @@ const TrustedMail = (props) => {
|
||||
|
||||
useEffect(() => {
|
||||
if (!isLoading) return;
|
||||
|
||||
const defaultSettings = getFromSessionStorage("defaultTrustedMailSettings");
|
||||
const newSettings = {
|
||||
type: type,
|
||||
@ -124,25 +119,33 @@ const TrustedMail = (props) => {
|
||||
setDomains(newInputs);
|
||||
};
|
||||
|
||||
const onSaveClick = () => {
|
||||
const onSaveClick = async () => {
|
||||
setIsSaving(true);
|
||||
const valid = domains.map((domain) => regexp.test(domain));
|
||||
if (type === "1" && valid.includes(false)) {
|
||||
setIsSaving(false);
|
||||
toastr.error(t("Common:IncorrectDomain"));
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const data = {
|
||||
type: Number(type),
|
||||
domains: domains,
|
||||
inviteUsersAsVisitors: true,
|
||||
};
|
||||
setMailDomainSettings(data);
|
||||
await setMailDomainSettings(data);
|
||||
saveToSessionStorage("defaultTrustedMailSettings", {
|
||||
type: type,
|
||||
domains: domains,
|
||||
});
|
||||
setShowReminder(false);
|
||||
toastr.success(t("SuccessfullySaveSettingsMessage"));
|
||||
} catch (error) {
|
||||
toastr.error(error);
|
||||
}
|
||||
|
||||
setIsSaving(false);
|
||||
};
|
||||
|
||||
const onCancelClick = () => {
|
||||
@ -194,7 +197,6 @@ const TrustedMail = (props) => {
|
||||
|
||||
{type === "1" && (
|
||||
<UserFields
|
||||
className="user-fields"
|
||||
inputs={domains}
|
||||
buttonLabel={t("AddTrustedDomain")}
|
||||
onChangeInput={onChangeInput}
|
||||
@ -204,11 +206,16 @@ const TrustedMail = (props) => {
|
||||
/>
|
||||
)}
|
||||
|
||||
<Buttons
|
||||
t={t}
|
||||
showReminder={showReminder}
|
||||
<SaveCancelButtons
|
||||
className="save-cancel-buttons"
|
||||
onSaveClick={onSaveClick}
|
||||
onCancelClick={onCancelClick}
|
||||
showReminder={showReminder}
|
||||
reminderTest={t("YouHaveUnsavedChanges")}
|
||||
saveButtonLabel={t("Common:SaveButton")}
|
||||
cancelButtonLabel={t("Common:CancelButton")}
|
||||
displaySettings={true}
|
||||
hasScroll={false}
|
||||
/>
|
||||
</MainContainer>
|
||||
);
|
||||
|
@ -2,6 +2,7 @@ import React, { useEffect, useState } from "react";
|
||||
import Submenu from "@appserver/components/submenu";
|
||||
import { withRouter } from "react-router";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { AppServerConfig } from "@appserver/common/constants";
|
||||
import { combineUrl } from "@appserver/common/utils";
|
||||
import config from "../../../../../../package.json";
|
||||
@ -11,7 +12,7 @@ import AccessPortal from "./access-portal/index.js";
|
||||
import AppLoader from "@appserver/common/components/AppLoader";
|
||||
|
||||
const SecurityWrapper = (props) => {
|
||||
const { t, history } = props;
|
||||
const { t, history, loadBaseInfo } = props;
|
||||
const [currentTab, setCurrentTab] = useState(0);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
@ -28,11 +29,16 @@ const SecurityWrapper = (props) => {
|
||||
},
|
||||
];
|
||||
|
||||
useEffect(() => {
|
||||
const load = async () => {
|
||||
await loadBaseInfo();
|
||||
const path = location.pathname;
|
||||
const currentTab = data.findIndex((item) => path.includes(item.id));
|
||||
if (currentTab !== -1) setCurrentTab(currentTab);
|
||||
setIsLoading(true);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
load();
|
||||
}, []);
|
||||
|
||||
const onSelect = (e) => {
|
||||
@ -55,4 +61,12 @@ const SecurityWrapper = (props) => {
|
||||
);
|
||||
};
|
||||
|
||||
export default withTranslation("Settings")(withRouter(SecurityWrapper));
|
||||
export default inject(({ setup }) => {
|
||||
const { initSettings } = setup;
|
||||
|
||||
return {
|
||||
loadBaseInfo: async () => {
|
||||
await initSettings();
|
||||
},
|
||||
};
|
||||
})(withTranslation("Settings")(withRouter(observer(SecurityWrapper))));
|
||||
|
@ -1,40 +0,0 @@
|
||||
import React from "react";
|
||||
import Button from "@appserver/components/button";
|
||||
import Text from "@appserver/components/text";
|
||||
import { ButtonsWrapper } from "../StyledSecurity";
|
||||
|
||||
const Buttons = (props) => {
|
||||
const { t, showReminder, onSaveClick, onCancelClick } = props;
|
||||
|
||||
return (
|
||||
<ButtonsWrapper>
|
||||
<Button
|
||||
label={t("Common:SaveButton")}
|
||||
size="small"
|
||||
primary={true}
|
||||
className="button"
|
||||
onClick={onSaveClick}
|
||||
isDisabled={!showReminder}
|
||||
/>
|
||||
<Button
|
||||
label={t("Common:CancelButton")}
|
||||
size="small"
|
||||
className="button"
|
||||
onClick={onCancelClick}
|
||||
isDisabled={!showReminder}
|
||||
/>
|
||||
{showReminder && (
|
||||
<Text
|
||||
color="#A3A9AE"
|
||||
fontSize="12px"
|
||||
fontWeight="600"
|
||||
className="reminder"
|
||||
>
|
||||
{t("YouHaveUnsavedChanges")}
|
||||
</Text>
|
||||
)}
|
||||
</ButtonsWrapper>
|
||||
);
|
||||
};
|
||||
|
||||
export default Buttons;
|
@ -27,7 +27,11 @@ const StyledInputWrapper = styled.div`
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
width: 370px;
|
||||
width: 350px;
|
||||
|
||||
@media (max-width: 375px) {
|
||||
width: 100%;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledAddWrapper = styled.div`
|
||||
|
@ -2,12 +2,18 @@ import api from "@appserver/common/api";
|
||||
import { makeAutoObservable } from "mobx";
|
||||
const { Filter } = api;
|
||||
import SelectionStore from "./SelectionStore";
|
||||
import authStore from "@appserver/common/store/AuthStore";
|
||||
import { combineUrl } from "@appserver/common/utils";
|
||||
import { AppServerConfig } from "@appserver/common/constants";
|
||||
import config from "../../package.json";
|
||||
|
||||
class SettingsSetupStore {
|
||||
selectionStore = null;
|
||||
authStore = null;
|
||||
|
||||
isLoadingArticleSettings = false;
|
||||
|
||||
isInit = false;
|
||||
|
||||
common = {
|
||||
whiteLabel: {
|
||||
@ -45,9 +51,22 @@ class SettingsSetupStore {
|
||||
|
||||
constructor() {
|
||||
this.selectionStore = new SelectionStore(this);
|
||||
this.authStore = authStore;
|
||||
makeAutoObservable(this);
|
||||
}
|
||||
|
||||
initSettings = async () => {
|
||||
if (this.isInit) return;
|
||||
this.isInit = true;
|
||||
|
||||
if (authStore.isAuthenticated) {
|
||||
await authStore.settingsStore.getPortalPasswordSettings();
|
||||
await authStore.tfaStore.getTfaType();
|
||||
await authStore.settingsStore.getIpRestrictionsEnable();
|
||||
await authStore.settingsStore.getIpRestrictions();
|
||||
}
|
||||
};
|
||||
|
||||
setIsLoading = (isLoading) => {
|
||||
this.security.accessRight.isLoading = isLoading;
|
||||
};
|
||||
@ -302,6 +321,10 @@ class SettingsSetupStore {
|
||||
|
||||
this.setCommonThirdPartyList(res);
|
||||
};
|
||||
|
||||
setIsLoadingArticleSettings = (isLoading) => {
|
||||
this.isLoadingArticleSettings = isLoading;
|
||||
};
|
||||
}
|
||||
|
||||
export default SettingsSetupStore;
|
||||
|
@ -802,6 +802,7 @@ Scenario("Trusted mail settings change test success", async ({ I }) => {
|
||||
I.mockEndpoint(Endpoints.info, "infoSettings");
|
||||
I.mockEndpoint(Endpoints.self, "selfSettings");
|
||||
I.mockEndpoint(Endpoints.common, "common");
|
||||
I.mockEndpoint(Endpoints.maildomainsettings, "maildomainsettings");
|
||||
|
||||
if (deviceType === "mobile") {
|
||||
I.amOnPage("/settings/security/access-portal/trusted-mail");
|
||||
@ -834,6 +835,7 @@ Scenario("Trusted mail settings change test error", async ({ I }) => {
|
||||
I.mockEndpoint(Endpoints.info, "infoSettings");
|
||||
I.mockEndpoint(Endpoints.self, "selfSettings");
|
||||
I.mockEndpoint(Endpoints.common, "common");
|
||||
I.mockEndpoint(Endpoints.maildomainsettings, "maildomainsettings");
|
||||
|
||||
if (deviceType === "mobile") {
|
||||
I.amOnPage("/settings/security/access-portal/trusted-mail");
|
||||
@ -859,3 +861,36 @@ Scenario("Trusted mail settings change test error", async ({ I }) => {
|
||||
I.see("Incorrect domain");
|
||||
}
|
||||
});
|
||||
|
||||
Scenario("Trusted mail settings change test server error", async ({ I }) => {
|
||||
I.mockEndpoint(Endpoints.settings, "settings");
|
||||
I.mockEndpoint(Endpoints.build, "build");
|
||||
I.mockEndpoint(Endpoints.info, "info");
|
||||
I.mockEndpoint(Endpoints.self, "self");
|
||||
I.mockEndpoint(Endpoints.common, "common");
|
||||
I.mockEndpoint(Endpoints.maildomainsettings, "maildomainsettingsError");
|
||||
|
||||
if (deviceType === "mobile") {
|
||||
I.amOnPage("/settings/security/access-portal/trusted-mail");
|
||||
|
||||
I.see("Trusted mail domain settings");
|
||||
|
||||
I.click({
|
||||
react: "Checkbox",
|
||||
props: {
|
||||
value: "1",
|
||||
},
|
||||
});
|
||||
|
||||
I.see("You have unsaved changes");
|
||||
I.click("Add trusted domain");
|
||||
|
||||
I.see({ react: "TextInput" });
|
||||
I.fillField("#domain-input-0", "test");
|
||||
|
||||
I.click("Save");
|
||||
|
||||
I.see("You have unsaved changes");
|
||||
I.see("Request failed with status code 400");
|
||||
}
|
||||
});
|
||||
|
@ -135,4 +135,10 @@ module.exports = class Endpoints {
|
||||
method: "PUT",
|
||||
baseDir: "settings",
|
||||
};
|
||||
|
||||
static maildomainsettings = {
|
||||
url: ["http://localhost:8092/api/2.0/settings/maildomainsettings.json"],
|
||||
method: "POST",
|
||||
baseDir: "settings",
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"count": 1,
|
||||
"response": "Settings have been successfully updated",
|
||||
"status": 0,
|
||||
"statusCode": 200
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"count": 1,
|
||||
"response": "Error",
|
||||
"status": 0,
|
||||
"statusCode": 400
|
||||
}
|
@ -36,6 +36,7 @@ using ASC.Core;
|
||||
using ASC.Core.Common.Settings;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.Core.Users;
|
||||
using ASC.IPSecurity;
|
||||
using ASC.MessagingSystem;
|
||||
using ASC.Web.Core.PublicResources;
|
||||
using ASC.Web.Core.Utility;
|
||||
@ -259,7 +260,9 @@ namespace ASC.Web.Core.Users
|
||||
email = (email ?? "").Trim();
|
||||
if (!email.TestEmailRegex()) throw new ArgumentNullException(nameof(email), Resource.ErrorNotCorrectEmail);
|
||||
|
||||
if (!IPSecurity.Verify())
|
||||
var settings = SettingsManager.Load<IPRestrictionsSettings>();
|
||||
|
||||
if (settings.Enable && !IPSecurity.Verify())
|
||||
{
|
||||
throw new Exception(Resource.ErrorAccessRestricted);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user