Merge branch 'develop' into feature/oauth2-client
This commit is contained in:
commit
c959e430f2
34
.github/workflows/ci-oci-install.yml
vendored
34
.github/workflows/ci-oci-install.yml
vendored
@ -4,7 +4,10 @@ on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
paths:
|
||||
- '.github/workflows/ci-oci-install.yml'
|
||||
- 'install/OneClickInstall/**'
|
||||
- '!install/OneClickInstall/install-Docker.sh'
|
||||
- '!install/OneClickInstall/docspace-install.sh'
|
||||
|
||||
schedule:
|
||||
- cron: '00 20 * * 6' # At 23:00 on Saturday.
|
||||
@ -35,6 +38,14 @@ on:
|
||||
type: boolean
|
||||
description: 'Ubuntu 22.04'
|
||||
default: true
|
||||
ubuntu2404:
|
||||
type: boolean
|
||||
description: 'Ubuntu 24.04'
|
||||
default: true
|
||||
fedora39:
|
||||
type: boolean
|
||||
description: 'Fedora 39'
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
@ -53,7 +64,9 @@ jobs:
|
||||
{"execute": '${{ github.event.inputs.debian11 || true }}', "name": "Debian11", "os": "debian11", "distr": "generic"},
|
||||
{"execute": '${{ github.event.inputs.debian12 || true }}', "name": "Debian12", "os": "debian12", "distr": "generic"},
|
||||
{"execute": '${{ github.event.inputs.ubuntu2004 || true }}', "name": "Ubuntu20.04", "os": "ubuntu2004", "distr": "generic"},
|
||||
{"execute": '${{ github.event.inputs.ubuntu2204 || true }}', "name": "Ubuntu22.04", "os": "ubuntu2204", "distr": "generic"}
|
||||
{"execute": '${{ github.event.inputs.ubuntu2204 || true }}', "name": "Ubuntu22.04", "os": "ubuntu2204", "distr": "generic"},
|
||||
{"execute": '${{ github.event.inputs.ubuntu2204 || true }}', "name": "Ubuntu24.04", "os": "ubuntu-24.04", "distr": "bento"},
|
||||
{"execute": '${{ github.event.inputs.fedora39 || true }}', "name": "Fedora39", "os": "39-cloud-base", "distr": "fedora"}
|
||||
]
|
||||
}' | jq -c '{include: [.include[] | select(.execute == true)]}')
|
||||
echo "matrix=${matrix}" >> $GITHUB_OUTPUT
|
||||
@ -68,7 +81,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v5
|
||||
@ -81,12 +94,17 @@ jobs:
|
||||
sudo apt update -y
|
||||
sudo apt install vagrant virtualbox -y
|
||||
|
||||
- name: Free Disk Space
|
||||
run: |
|
||||
sudo rm -rf /usr/local/lib/android /opt/ghc
|
||||
sudo docker image prune --all --force
|
||||
|
||||
- name: "Test production scripts with ${{matrix.name}}"
|
||||
if: ${{ github.event_name == 'schedule' }}
|
||||
uses: nick-fields/retry@v2
|
||||
uses: nick-fields/retry@v3
|
||||
with:
|
||||
max_attempts: 2
|
||||
timeout_minutes: 40
|
||||
timeout_minutes: 80
|
||||
retry_on: error
|
||||
command: |
|
||||
set -eux
|
||||
@ -97,7 +115,7 @@ jobs:
|
||||
DOWNLOAD_SCRIPT='-ds true' \
|
||||
RAM='5100' \
|
||||
CPU='3' \
|
||||
ARGUMENTS="-arg '--skiphardwarecheck true --makeswap false'" \
|
||||
ARGUMENTS="-arg '--skiphardwarecheck true'" \
|
||||
vagrant up
|
||||
on_retry_command: |
|
||||
echo "RUN CLEAN UP: Destroy vagrant and one more try"
|
||||
@ -107,10 +125,10 @@ jobs:
|
||||
|
||||
- name: "Test Local scripts with ${{matrix.name}}"
|
||||
if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: nick-fields/retry@v2
|
||||
uses: nick-fields/retry@v3
|
||||
with:
|
||||
max_attempts: 2
|
||||
timeout_minutes: 40
|
||||
timeout_minutes: 80
|
||||
retry_on: error
|
||||
command: |
|
||||
set -eux
|
||||
@ -122,7 +140,7 @@ jobs:
|
||||
CPU='3' \
|
||||
DOWNLOAD_SCRIPT='-ds false' \
|
||||
TEST_REPO='-tr true' \
|
||||
ARGUMENTS="-arg '--skiphardwarecheck true --makeswap false --localscripts true'" \
|
||||
ARGUMENTS="-arg '--skiphardwarecheck true --localscripts true'" \
|
||||
vagrant up
|
||||
on_retry_command: |
|
||||
echo "RUN CLEAN UP: Destroy vagrant and one more try"
|
||||
|
4
.github/workflows/ci-oci-update.yml
vendored
4
.github/workflows/ci-oci-update.yml
vendored
@ -66,7 +66,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v5
|
||||
@ -86,7 +86,7 @@ jobs:
|
||||
|
||||
- name: Testing with update ${{matrix.name}}
|
||||
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
|
||||
uses: nick-fields/retry@v2
|
||||
uses: nick-fields/retry@v3
|
||||
with:
|
||||
max_attempts: 1
|
||||
timeout_minutes: 60
|
||||
|
17
.github/workflows/cron-build.yml
vendored
17
.github/workflows/cron-build.yml
vendored
@ -28,6 +28,9 @@ jobs:
|
||||
matching_branches=${matching_branches#,}
|
||||
echo "json_output=[${matching_branches}]" >> $GITHUB_OUTPUT
|
||||
|
||||
last_branch=$(echo ${matching_branches} | awk -F, '{print $NF}' | sed 's/"//g')
|
||||
echo "last_branch=${last_branch}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Dispatch Action
|
||||
run: |
|
||||
echo "${{ steps.list-branches.outputs.json_output }}"
|
||||
@ -38,3 +41,17 @@ jobs:
|
||||
"https://api.github.com/repos/ONLYOFFICE/DocSpace-buildtools/dispatches" \
|
||||
-H "Accept: application/vnd.github.everest-preview+json" \
|
||||
--data '{"event_type": "cron-trigger-action", "client_payload": { "branches": ${{ steps.list-branches.outputs.json_output }}}}'
|
||||
|
||||
curl \
|
||||
-X POST \
|
||||
-u "${{ secrets.USERNAME}}:${{secrets.TOKEN}}" \
|
||||
https://api.github.com/repos/ONLYOFFICE/DocSpace/actions/workflows/59268961/dispatches \
|
||||
-H "Accept: application/vnd.github.everest-preview+json" \
|
||||
--data '{
|
||||
"ref": "${{ steps.list-branches.outputs.last_branch }}",
|
||||
"inputs": {
|
||||
"branch-buildtools": "${{ steps.list-branches.outputs.last_branch }}",
|
||||
"branch-client": "${{ steps.list-branches.outputs.last_branch }}",
|
||||
"branch-server": "${{ steps.list-branches.outputs.last_branch }}"
|
||||
}
|
||||
}'
|
||||
|
10
.github/workflows/main-build.yml
vendored
10
.github/workflows/main-build.yml
vendored
@ -55,14 +55,20 @@ jobs:
|
||||
run: |
|
||||
cd .${DOCKER_PATH}
|
||||
if [ "${{ matrix.branch }}" = "develop" ]; then
|
||||
DOCKER_TAG="develop.${{ github.run_number }}"
|
||||
PRODUCT_VERSION="develop"
|
||||
DOCKER_TAG=${PRODUCT_VERSION}.${{ github.run_number }}
|
||||
else
|
||||
DOCKER_TAG=$(echo "${{ matrix.branch }}" | sed '/^release\b\|^hotfix\b\|^feature\b/s/release.*\/\|hotfix.*\/\|feature.*\///; s/-git-action$//; s/^v//').${{github.run_number}}
|
||||
PRODUCT_VERSION=$(echo "${{ matrix.branch }}" | sed '/^release\b\|^hotfix\b\|^feature\b/s/release.*\/\|hotfix.*\/\|feature.*\///; s/-git-action$//; s/^v//')
|
||||
DOCKER_TAG=${PRODUCT_VERSION}.${{github.run_number}}
|
||||
fi
|
||||
export DOCKER_TAG
|
||||
docker buildx bake -f build.yml \
|
||||
--set *.args.GIT_BRANCH=${{ matrix.branch }} \
|
||||
--set *.args.PRODUCT_VERSION=${PRODUCT_VERSION} \
|
||||
--set *.args.BUILD_NUMBER=${BUILD_NUMBER} \
|
||||
--set *.platform=linux/amd64 \
|
||||
--set *.args.PRODUCT_VERSION=${PRODUCT_VERSION} \
|
||||
--set *.args.BUILD_NUMBER=${{github.run_number}} \
|
||||
--push
|
||||
|
||||
echo "version=${DOCKER_TAG}" >> "$GITHUB_OUTPUT"
|
||||
|
4
.github/workflows/rebuild-boxes.yml
vendored
4
.github/workflows/rebuild-boxes.yml
vendored
@ -64,7 +64,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v5
|
||||
@ -86,7 +86,7 @@ jobs:
|
||||
sudo docker image prune --all --force
|
||||
|
||||
- name: Rebuild boxes
|
||||
uses: nick-fields/retry@v2
|
||||
uses: nick-fields/retry@v3
|
||||
with:
|
||||
max_attempts: 2
|
||||
timeout_minutes: 90
|
||||
|
@ -20,10 +20,19 @@ def help():
|
||||
print("d Run dnsmasq.")
|
||||
print()
|
||||
|
||||
|
||||
rd = os.path.dirname(os.path.abspath(__file__))
|
||||
dir = os.path.abspath(os.path.join(rd, ".."))
|
||||
dockerDir = os.path.join(dir, "buildtools", "install", "docker")
|
||||
local_ip = socket.gethostbyname_ex(socket.gethostname())[-1][-1]
|
||||
networks = socket.gethostbyname_ex(socket.gethostname())
|
||||
local_ip = networks[-1][-1]
|
||||
|
||||
if local_ip == "127.0.0.1":
|
||||
local_ip = networks[-1][0]
|
||||
|
||||
if local_ip == "127.0.0.1":
|
||||
print("Error: Local IP is 127.0.0.1", networks)
|
||||
sys.exit(1)
|
||||
|
||||
doceditor = f"{local_ip}:5013"
|
||||
login = f"{local_ip}:5011"
|
||||
@ -107,7 +116,7 @@ if arch_name == "x86_64" or arch_name == "AMD64":
|
||||
subprocess.run(["docker", "compose", "-f", os.path.join(dockerDir, "db.yml"), "up", "-d"])
|
||||
elif arch_name == "arm64":
|
||||
print("CPU Type: arm64 -> run db.yml with arm64v8 image")
|
||||
os.environ["MYSQL_IMAGE"] = "arm64v8/mysql:8.0.32-oracle"
|
||||
os.environ["MYSQL_IMAGE"] = "arm64v8/mysql:8.3.0-oracle"
|
||||
subprocess.run(["docker", "compose", "-f", os.path.join(dockerDir, "db.yml"), "up", "-d"])
|
||||
else:
|
||||
print("Error: Unknown CPU Type:", arch_name)
|
||||
|
42
campaigns.downloader.py
Normal file
42
campaigns.downloader.py
Normal file
@ -0,0 +1,42 @@
|
||||
import os
|
||||
from github import Github
|
||||
import requests
|
||||
import shutil
|
||||
|
||||
rd = os.path.dirname(os.path.abspath(__file__))
|
||||
dir = os.path.abspath(os.path.join(rd, ".."))
|
||||
publicDir = os.path.join(dir, "client/public")
|
||||
g = Github()
|
||||
repo = g.get_repo("ONLYOFFICE/ASC.Web.Campaigns")
|
||||
repoFolder = "src/campaigns"
|
||||
|
||||
def download(c, out):
|
||||
r = requests.get(c.download_url)
|
||||
output_path = f'{out}/{c.path}'
|
||||
os.makedirs(os.path.dirname(output_path), exist_ok=True)
|
||||
with open(output_path, 'wb') as f:
|
||||
f.write(r.content)
|
||||
|
||||
|
||||
def download_folder(repo, folder, out, recursive):
|
||||
contents = repo.get_contents(folder)
|
||||
for c in contents:
|
||||
if c.download_url is None:
|
||||
if recursive:
|
||||
download_folder(repo, c.path, out, recursive)
|
||||
continue
|
||||
download(c, out)
|
||||
|
||||
def move_folder():
|
||||
srcPath = publicDir + "/src"
|
||||
campaignsPath = srcPath + "/campaigns"
|
||||
newPath = publicDir + "/campaigns"
|
||||
|
||||
if os.path.exists(newPath):
|
||||
shutil.rmtree(newPath)
|
||||
shutil.move(campaignsPath, newPath)
|
||||
shutil.rmtree(srcPath)
|
||||
|
||||
download_folder(repo, repoFolder, publicDir, True)
|
||||
move_folder()
|
||||
print("It's OK")
|
@ -33,7 +33,7 @@
|
||||
"auth" : {
|
||||
"allowskip" : {
|
||||
"default" : false,
|
||||
"registerportal": true
|
||||
"registerportal": false
|
||||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
|
@ -32,7 +32,8 @@
|
||||
},
|
||||
"forwardedHeadersOptions": {
|
||||
"knownNetworks": [],
|
||||
"knownProxies": ["127.0.0.1"]
|
||||
"knownProxies": ["127.0.0.1"],
|
||||
"allowedHosts": []
|
||||
}
|
||||
},
|
||||
"themelimit": "9",
|
||||
@ -45,6 +46,9 @@
|
||||
"server-root": "",
|
||||
"username": {
|
||||
"regex": "^[\\p{L}\\p{M}' \\-]+$"
|
||||
},
|
||||
"tenantname": {
|
||||
"regex": "^\\D*$"
|
||||
}
|
||||
},
|
||||
"license": {
|
||||
@ -68,250 +72,17 @@
|
||||
}
|
||||
},
|
||||
"files": {
|
||||
"thirdparty": {
|
||||
"enable": [
|
||||
"box",
|
||||
"dropboxv2",
|
||||
"docusign",
|
||||
"google",
|
||||
"onedrive",
|
||||
"sharepoint",
|
||||
"nextcloud",
|
||||
"owncloud",
|
||||
"webdav",
|
||||
"kdrive"
|
||||
]
|
||||
},
|
||||
"thirdparty": { "enable": ["box", "dropboxv2", "docusign", "google", "onedrive", "nextcloud", "owncloud", "webdav", "kdrive" ] },
|
||||
"docservice": {
|
||||
"coauthor-docs": [
|
||||
".csv",
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dotm",
|
||||
".dotx",
|
||||
".oform",
|
||||
".potm",
|
||||
".potx",
|
||||
".ppsm",
|
||||
".pptm",
|
||||
".ppsx",
|
||||
".pptx",
|
||||
".txt",
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xltm",
|
||||
".xltx"
|
||||
],
|
||||
"commented-docs": [
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dotm",
|
||||
".dotx",
|
||||
".potm",
|
||||
".potx",
|
||||
".ppsm",
|
||||
".pptm",
|
||||
".ppsx",
|
||||
".pptx",
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xltm",
|
||||
".xltx"
|
||||
],
|
||||
"convert-docs": [
|
||||
".doc",
|
||||
".dot",
|
||||
".dps",
|
||||
".dpt",
|
||||
".epub",
|
||||
".et",
|
||||
".ett",
|
||||
".fb2",
|
||||
".fodp",
|
||||
".fods",
|
||||
".fodt",
|
||||
".htm",
|
||||
".html",
|
||||
".mht",
|
||||
".mhtml",
|
||||
".odp",
|
||||
".ods",
|
||||
".odt",
|
||||
".otp",
|
||||
".ots",
|
||||
".ott",
|
||||
".pot",
|
||||
".pps",
|
||||
".ppt",
|
||||
".rtf",
|
||||
".stw",
|
||||
".sxc",
|
||||
".sxi",
|
||||
".sxw",
|
||||
".wps",
|
||||
".wpt",
|
||||
".xls",
|
||||
".xlsb",
|
||||
".xlt",
|
||||
".xml"
|
||||
],
|
||||
"edited-docs": [
|
||||
".csv",
|
||||
".doc",
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dot",
|
||||
".dotm",
|
||||
".dotx",
|
||||
".dps",
|
||||
".dpt",
|
||||
".epub",
|
||||
".et",
|
||||
".ett",
|
||||
".fb2",
|
||||
".fodp",
|
||||
".fods",
|
||||
".fodt",
|
||||
".htm",
|
||||
".html",
|
||||
".mht",
|
||||
".mhtml",
|
||||
".odp",
|
||||
".ods",
|
||||
".odt",
|
||||
".oform",
|
||||
".otp",
|
||||
".ots",
|
||||
".ott",
|
||||
".pdf",
|
||||
".pot",
|
||||
".potm",
|
||||
".potx",
|
||||
".pps",
|
||||
".ppsm",
|
||||
".ppsx",
|
||||
".ppt",
|
||||
".pptm",
|
||||
".pptx",
|
||||
".rtf",
|
||||
".stw",
|
||||
".sxc",
|
||||
".sxi",
|
||||
".sxw",
|
||||
".txt",
|
||||
".wps",
|
||||
".wpt",
|
||||
".xls",
|
||||
".xlsb",
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xlt",
|
||||
".xltm",
|
||||
".xltx",
|
||||
".xml"
|
||||
],
|
||||
"encrypted-docs":
|
||||
[
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dotm",
|
||||
".dotx",
|
||||
".oform",
|
||||
".potm",
|
||||
".potx",
|
||||
".ppsm",
|
||||
".pptm",
|
||||
".ppsx",
|
||||
".pptx",
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xltm",
|
||||
".xltx",
|
||||
".pdf"
|
||||
],
|
||||
"coauthor-docs": [ ".csv", ".docm", ".docx", ".docxf", ".dotm", ".dotx", ".oform", ".pdf", ".potm", ".potx", ".ppsm", ".pptm", ".ppsx", ".pptx", ".txt", ".xlsm", ".xlsx", ".xltm", ".xltx" ],
|
||||
"commented-docs": [ ".docm", ".docx", ".docxf", ".dotm", ".dotx", ".potm", ".potx", ".ppsm", ".pptm", ".ppsx", ".pptx", ".xlsm", ".xlsx", ".xltm", ".xltx" ],
|
||||
"convert-docs": [ ".doc", ".dot", ".dps", ".dpt", ".epub", ".et", ".ett", ".fb2", ".fodp", ".fods", ".fodt", ".htm", ".html", ".mht", ".mhtml", ".odp", ".ods", ".odt", ".otp", ".ots", ".ott", ".pot", ".pps", ".ppt", ".rtf", ".stw", ".sxc", ".sxi", ".sxw", ".wps", ".wpt", ".xls", ".xlsb", ".xlt", ".xml" ],
|
||||
"edited-docs": [ ".csv", ".doc", ".docm", ".docx", ".docxf", ".dot", ".dotm", ".dotx", ".dps", ".dpt", ".epub", ".et", ".ett", ".fb2", ".fodp", ".fods", ".fodt", ".htm", ".html", ".mht", ".mhtml", ".odp", ".ods", ".odt", ".oform", ".otp", ".ots", ".ott", ".pdf", ".pot", ".potm", ".potx", ".pps", ".ppsm", ".ppsx", ".ppt", ".pptm", ".pptx", ".rtf", ".stw", ".sxc", ".sxi", ".sxw", ".txt", ".wps", ".wpt", ".xls", ".xlsb", ".xlsm", ".xlsx", ".xlt", ".xltm", ".xltx", ".xml" ],
|
||||
"encrypted-docs": [ ".docm", ".docx", ".docxf", ".dotm", ".dotx", ".oform", ".potm", ".potx", ".ppsm", ".pptm", ".ppsx", ".pptx", ".xlsm", ".xlsx", ".xltm", ".xltx", ".pdf" ],
|
||||
"formfilling-docs": [".pdf"],
|
||||
"customfilter-docs":
|
||||
[
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xltm",
|
||||
".xltx"
|
||||
],
|
||||
"reviewed-docs":
|
||||
[
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dotm",
|
||||
".dotx"
|
||||
],
|
||||
"viewed-docs":
|
||||
[
|
||||
".csv",
|
||||
".djvu",
|
||||
".doc",
|
||||
".docm",
|
||||
".docx",
|
||||
".docxf",
|
||||
".dot",
|
||||
".dotm",
|
||||
".dotx",
|
||||
".dps",
|
||||
".dpt",
|
||||
".epub",
|
||||
".et",
|
||||
".ett",
|
||||
".fb2",
|
||||
".fodp",
|
||||
".fods",
|
||||
".fodt",
|
||||
".gdoc",
|
||||
".gsheet",
|
||||
".gslides",
|
||||
".htm",
|
||||
".html",
|
||||
".mht",
|
||||
".mhtml",
|
||||
".odp",
|
||||
".ods",
|
||||
".odt",
|
||||
".oform",
|
||||
".otp",
|
||||
".ots",
|
||||
".ott",
|
||||
".oxps",
|
||||
".pdf",
|
||||
".pot",
|
||||
".potm",
|
||||
".potx",
|
||||
".pps",
|
||||
".ppsm",
|
||||
".ppsx",
|
||||
".ppt",
|
||||
".pptm",
|
||||
".pptx",
|
||||
".rtf",
|
||||
".stw",
|
||||
".sxc",
|
||||
".sxi",
|
||||
".sxw",
|
||||
".txt",
|
||||
".wps",
|
||||
".wpt",
|
||||
".xls",
|
||||
".xlsb",
|
||||
".xlsm",
|
||||
".xlsx",
|
||||
".xlt",
|
||||
".xltm",
|
||||
".xltx",
|
||||
".xml",
|
||||
".xps"
|
||||
],
|
||||
"customfilter-docs": [ ".xlsm", ".xlsx", ".xltm", ".xltx" ],
|
||||
"reviewed-docs": [ ".docm", ".docx", ".docxf", ".dotm", ".dotx" ],
|
||||
"viewed-docs": [ ".csv", ".djvu", ".doc", ".docm", ".docx", ".docxf", ".dot", ".dotm", ".dotx", ".dps", ".dpt", ".epub", ".et", ".ett", ".fb2", ".fodp", ".fods", ".fodt", ".gdoc", ".gsheet", ".gslides", ".htm", ".html", ".mht", ".mhtml", ".odp", ".ods", ".odt", ".oform", ".otp", ".ots", ".ott", ".oxps", ".pdf", ".pot", ".potm", ".potx", ".pps", ".ppsm", ".ppsx", ".ppt", ".pptm", ".pptx", ".rtf", ".stw", ".sxc", ".sxi", ".sxw", ".txt", ".wps", ".wpt", ".xls", ".xlsb", ".xlsm", ".xlsx", ".xlt", ".xltm", ".xltx", ".xml", ".xps" ],
|
||||
"secret": {
|
||||
"value": "secret",
|
||||
"header": "AuthorizationJwt"
|
||||
@ -330,42 +101,17 @@
|
||||
"chunk-size": 10485760,
|
||||
"url": "/"
|
||||
},
|
||||
"viewed-images": [
|
||||
".svg",
|
||||
".bmp",
|
||||
".gif",
|
||||
".jpeg",
|
||||
".jpg",
|
||||
".png",
|
||||
".ico",
|
||||
".tif",
|
||||
".tiff",
|
||||
".webp"
|
||||
],
|
||||
"viewed-media": [
|
||||
".aac",
|
||||
".flac",
|
||||
".m4a",
|
||||
".mp3",
|
||||
".oga",
|
||||
".ogg",
|
||||
".wav",
|
||||
".f4v",
|
||||
".m4v",
|
||||
".mov",
|
||||
".mp4",
|
||||
".ogv",
|
||||
".webm"
|
||||
],
|
||||
"index": [".pptx", ".xlsx", ".docx"],
|
||||
"viewed-images": [ ".svg", ".bmp", ".gif", ".jpeg", ".jpg", ".png", ".ico", ".tif", ".tiff", ".webp" ],
|
||||
"viewed-media": [ ".aac", ".flac", ".m4a", ".mp3", ".oga", ".ogg", ".wav", ".f4v", ".m4v", ".mov", ".mp4", ".ogv", ".webm" ],
|
||||
"index": [".pptx", ".xlsx", ".docx", ".pdf"],
|
||||
"oform": {
|
||||
"domain": "https://cmsoforms.teamlab.info",
|
||||
"path": "/api/oforms/",
|
||||
"ext": ".oform",
|
||||
"ext": ".pdf",
|
||||
"upload": {
|
||||
"domain": "https://oforms.teamlab.info",
|
||||
"path": "/api/upload",
|
||||
"ext": ".docxf",
|
||||
"ext": ".pdf",
|
||||
"dashboard": "/dashboard/api"
|
||||
}
|
||||
}
|
||||
@ -374,7 +120,7 @@
|
||||
"api": "api/2.0",
|
||||
"alias": {
|
||||
"min": 3,
|
||||
"max": 100
|
||||
"max": 63
|
||||
},
|
||||
"api-system": "",
|
||||
"api-cache": "",
|
||||
@ -384,7 +130,7 @@
|
||||
"url": "/socket.io",
|
||||
"internal": "http://localhost:9899/"
|
||||
},
|
||||
"cultures": "az,bg,cs,de,el-GR,en-GB,en-US,es,fi,fr,hy-AM,it,lv,nl,pl,pt,pt-BR,ro,ru,sk,sl,vi,tr,uk-UA,ar-SA,lo-LA,ja-JP,zh-CN,ko-KR",
|
||||
"cultures": "az,cs,de,en-GB,en-US,es,fr,it,lv,nl,pl,pt-BR,pt,ro,sk,sl,fi,vi,tr,el-GR,bg,ru,sr-Latn-RS,uk-UA,hy-AM,ar-SA,si,lo-LA,zh-CN,ja-JP,ko-KR",
|
||||
"controlpanel": {
|
||||
"url": ""
|
||||
},
|
||||
@ -398,6 +144,7 @@
|
||||
"documentation-email": "documentation@onlyoffice.com",
|
||||
"max-upload-size": 5242880,
|
||||
"zendesk-key": "",
|
||||
"tagmanager-id": "",
|
||||
"samesite": "",
|
||||
"sso": {
|
||||
"saml": {
|
||||
@ -475,47 +222,8 @@
|
||||
"thumbnail": {
|
||||
"maxDegreeOfParallelism": 1,
|
||||
"sizes": [
|
||||
{
|
||||
"height": 156,
|
||||
"width": 216
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 240
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 264
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 288
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 312
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 336
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 360
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 400
|
||||
},
|
||||
{
|
||||
"height": 156,
|
||||
"width": 440
|
||||
},
|
||||
{
|
||||
"height": 720,
|
||||
"width": 1280,
|
||||
"resizeMode": "Max"
|
||||
}
|
||||
{ "height": 720, "width": 1280, "resizeMode": "Manual" },
|
||||
{ "height": 2160, "width": 3840, "resizeMode": "Manual" }
|
||||
]
|
||||
},
|
||||
"csp": {
|
||||
@ -526,7 +234,7 @@
|
||||
"img": ["'self'", "data:", "blob:"],
|
||||
"frame": ["'self'"],
|
||||
"fonts": ["'self'", "data:"],
|
||||
"connect": ["'self'", "data:"],
|
||||
"connect": ["'self'", "data:", "ws:"],
|
||||
"media": ["'self'"]
|
||||
},
|
||||
"zendesk": {
|
||||
@ -538,6 +246,7 @@
|
||||
"firebase": {
|
||||
"script": ["*.googleapis.com", "*.firebaseio.com"],
|
||||
"frame": ["personal-teamlab-guru.firebaseapp.com"],
|
||||
"img": ["personal-teamlab-guru.firebaseapp.com"],
|
||||
"connect": ["personal-teamlab-guru.firebaseapp.com", "*.googleapis.com"]
|
||||
},
|
||||
"oform": {
|
||||
@ -600,5 +309,15 @@
|
||||
"fd00::/8",
|
||||
"fe80::/64"
|
||||
]
|
||||
},
|
||||
"openApi": {
|
||||
"enable": true,
|
||||
"enableUI": true,
|
||||
"endpoints": {
|
||||
"asc.web.api": "/openapi/asc.web.api/common.yaml",
|
||||
"asc.people": "/openapi/asc.people/common.yaml",
|
||||
"asc.files": "/openapi/asc.files/common.yaml",
|
||||
"asc.data.backup": "/openapi/asc.data.backup/common.yaml"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -146,9 +146,7 @@
|
||||
"dropboxClientSecret": ""
|
||||
},
|
||||
"additional": {
|
||||
"dropboxRedirectUrl" : "https://service.teamlab.info/oauth2.aspx",
|
||||
"dropboxappkey" : "",
|
||||
"dropboxappsecret" : ""
|
||||
"dropboxRedirectUrl" : "https://service.teamlab.info/oauth2.aspx"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -9,6 +9,6 @@ server=8.8.4.4
|
||||
server=8.8.8.8
|
||||
strict-order
|
||||
#serve all .company queries using a specific nameserver
|
||||
server=/site/127.0.0.1
|
||||
server=/site/192.168.0.18
|
||||
#explicitly define host-ip mappings
|
||||
address=/docspace.site/127.0.0.1
|
||||
address=/docspace.site/192.168.0.18
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"elastic": {
|
||||
"Scheme": "http",
|
||||
"Host": "onlyoffice-elasticsearch",
|
||||
"Host": "onlyoffice-opensearch",
|
||||
"Port": "9200",
|
||||
"Threads": "1"
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"kafka": {}
|
||||
}
|
89
config/nginx/html/custom_401.html
Normal file
89
config/nginx/html/custom_401.html
Normal file
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/x-icon" href="/logo.ashx?logotype=3" />
|
||||
<title>401 Error Page</title>
|
||||
<style>
|
||||
body,
|
||||
html {
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
font-family: "Open Sans", Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.error-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
cursor: default;
|
||||
width: auto;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
margin: 0px auto;
|
||||
padding-top: 36px;
|
||||
border: 0px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error-image {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.error-header {
|
||||
font-size: 23px;
|
||||
line-height: 28px;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
margin: 0px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
font-weight: 400;
|
||||
color: #555f65;
|
||||
margin: 0px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.error-container {
|
||||
width: 343px;
|
||||
}
|
||||
.error-image {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
max-width: 287px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="error-container">
|
||||
<img
|
||||
src="/static/images/error401.svg"
|
||||
alt="Error Character"
|
||||
class="error-image"
|
||||
/>
|
||||
<h1 class="error-header">401 Error!</h1>
|
||||
<p class="error-text">
|
||||
Unauthorized request. To access this file, you must enter a password or
|
||||
be a registered user.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
88
config/nginx/html/custom_403.html
Normal file
88
config/nginx/html/custom_403.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/x-icon" href="/logo.ashx?logotype=3" />
|
||||
<title>403 Error Page</title>
|
||||
<style>
|
||||
body,
|
||||
html {
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
font-family: "Open Sans", Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.error-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
cursor: default;
|
||||
width: auto;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
margin: 0px auto;
|
||||
padding-top: 36px;
|
||||
border: 0px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error-image {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.error-header {
|
||||
font-size: 23px;
|
||||
line-height: 28px;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
margin: 0px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
font-weight: 400;
|
||||
color: #555f65;
|
||||
margin: 0px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.error-container {
|
||||
width: 343px;
|
||||
}
|
||||
.error-image {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
max-width: 287px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="error-container">
|
||||
<img
|
||||
src="/static/images/error403.svg"
|
||||
alt="Error Character"
|
||||
class="error-image"
|
||||
/>
|
||||
<h1 class="error-header">403 Error!</h1>
|
||||
<p class="error-text">
|
||||
Forbidden. You don't have permissions to access the requested resource.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
88
config/nginx/html/custom_404.html
Normal file
88
config/nginx/html/custom_404.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/x-icon" href="/logo.ashx?logotype=3" />
|
||||
<title>404 Error Page</title>
|
||||
<style>
|
||||
body,
|
||||
html {
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
font-family: "Open Sans", Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.error-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
cursor: default;
|
||||
width: auto;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
margin: 0px auto;
|
||||
padding-top: 36px;
|
||||
border: 0px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error-image {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.error-header {
|
||||
font-size: 23px;
|
||||
line-height: 28px;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
margin: 0px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
font-weight: 400;
|
||||
color: #555f65;
|
||||
margin: 0px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.error-container {
|
||||
width: 343px;
|
||||
}
|
||||
.error-image {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
max-width: 287px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="error-container">
|
||||
<img
|
||||
src="/static/images/error404.svg"
|
||||
alt="Error Character"
|
||||
class="error-image"
|
||||
/>
|
||||
<h1 class="error-header">404 Error!</h1>
|
||||
<p class="error-text">
|
||||
Page not found. The server cannot find the requested resource.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
88
config/nginx/html/custom_50x.html
Normal file
88
config/nginx/html/custom_50x.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/x-icon" href="/logo.ashx?logotype=3" />
|
||||
<title>500 Error Page</title>
|
||||
<style>
|
||||
body,
|
||||
html {
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
font-family: "Open Sans", Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.error-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
cursor: default;
|
||||
width: auto;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
margin: 0px auto;
|
||||
padding-top: 36px;
|
||||
border: 0px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error-image {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.error-header {
|
||||
font-size: 23px;
|
||||
line-height: 28px;
|
||||
font-weight: 700;
|
||||
color: #333333;
|
||||
margin: 0px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
font-weight: 400;
|
||||
color: #555f65;
|
||||
margin: 0px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.error-container {
|
||||
width: 343px;
|
||||
}
|
||||
.error-image {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.error-text {
|
||||
max-width: 287px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="error-container">
|
||||
<img
|
||||
src="/static/images/error500.svg"
|
||||
alt="Error Character"
|
||||
class="error-image"
|
||||
/>
|
||||
<h1 class="error-header">500 Error!</h1>
|
||||
<p class="error-text">
|
||||
The server is currently unable to handle this request.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -44,9 +44,9 @@ map $request_uri $header_x_frame_options {
|
||||
|
||||
map $request_uri $cache_control {
|
||||
default "no-cache, no-store, no-transform";
|
||||
~*\/(filehandler\.ashx\?action=(thumb|preview))|\/(storage\/room_logos\/root\/|storage\/userPhotos\/root\/) "must-revalidate, no-transform, immutable, max-age=31536000";
|
||||
~*\/(api\/2\.0.*|storage|login\.ashx|filehandler\.ashx|ChunkedUploader.ashx|ThirdPartyAppHandler|apisystem|sh|remoteEntry\.js|debuginfo\.md|static\/scripts\/api\.js|static\/scripts\/api\.poly\.js) "no-cache, no-store, no-transform";
|
||||
~*\/(images|favicon.ico.*)|\.(js|woff|woff2|css)|(locales.*\.json) "must-revalidate, no-transform, immutable, max-age=31536000";
|
||||
~*\/(filehandler\.ashx\?action=(thumb|preview))|\/(storage\/room_logos\/root\/.*\?hash.*|storage\/userPhotos\/root\/.*\?hash.*|storage\/whitelabel\/root\/.*\?hash.*|storage\/static_partnerdata\/root\/.*\?hash.*) "must-revalidate, no-transform, immutable, max-age=31536000";
|
||||
~*\/(api\/2\.0.*|storage|login\.ashx|filehandler\.ashx|ChunkedUploader.ashx|ThirdPartyAppHandler|apisystem|sh|remoteEntry\.js|debuginfo\.md|static\/scripts\/api\.js|static\/scripts\/sdk\/.*|static\/scripts\/api\.poly\.js) "no-cache, no-store, no-transform";
|
||||
~*\/(static\/images\/.*)|\/(_next\/public\/images\/.*)|\.(js|woff|woff2|css)|(locales.*\.json) "must-revalidate, no-transform, immutable, max-age=31536000";
|
||||
}
|
||||
|
||||
map $request_uri $content_security_policy {
|
||||
@ -102,7 +102,18 @@ server {
|
||||
set $csp "";
|
||||
access_by_lua '
|
||||
local accept_header = ngx.req.get_headers()["Accept"]
|
||||
if ngx.req.get_method() == "GET" and accept_header ~= nil and string.find(accept_header, "html") and not ngx.re.match(ngx.var.request_uri, "ds-vpath") then
|
||||
if ngx.req.get_method() == "GET" and accept_header ~= nil and string.find(accept_header, "html") and not ngx.re.match(ngx.var.request_uri, "ds-vpath|/api/") then
|
||||
|
||||
if not ngx.re.match(ngx.var.request_uri, "login|thirdparty|confirm|error|wizard|preparation-portal|unavailable|share=.|rooms/share(.*)key=.|/s/*") then
|
||||
if ngx.var.http_cookie == nil or not string.find(ngx.var.http_cookie, "asc_auth_key") then
|
||||
if ngx.var.request_uri == "/" then
|
||||
return ngx.redirect("/login")
|
||||
else
|
||||
return ngx.redirect("/login?referenceUrl=" .. ngx.var.request_uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local key = string.format("csp:%s",ngx.var.host)
|
||||
local redis = require "resty.redis"
|
||||
local red = redis:new()
|
||||
@ -157,10 +168,23 @@ server {
|
||||
|
||||
}
|
||||
|
||||
location ^~ /dashboards/ {
|
||||
auth_basic "Restricted Access";
|
||||
auth_basic_user_file /etc/nginx/.htpasswd_dashboards;
|
||||
|
||||
rewrite ^/dashboards(/.*)$ $1 break;
|
||||
proxy_pass http://127.0.0.1:5601;
|
||||
proxy_redirect off;
|
||||
proxy_buffering off;
|
||||
|
||||
proxy_set_header Connection "Keep-Alive";
|
||||
proxy_set_header Proxy-Connection "Keep-Alive";
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5001;
|
||||
proxy_redirect off;
|
||||
location ~* /(manifest.json|sw.js|appIcon(.)*\.png|icon.svg|bg-error.png|favicon.ico|debuginfo.md) {
|
||||
location ~* /(manifest.json|sw.js|appIcon(.)*\.png|icon.svg|bg-error.png|debuginfo.md) {
|
||||
try_files /$basename /index.html =404;
|
||||
}
|
||||
|
||||
@ -185,8 +209,8 @@ server {
|
||||
try_files /locales/$content/$basename /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/scripts/ {
|
||||
try_files /scripts/$basename /index.html =404;
|
||||
location ~* /static/scripts/(.*)$ {
|
||||
try_files /scripts/$1 /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/plugins/ {
|
||||
@ -196,44 +220,29 @@ server {
|
||||
location ~* /static/images/(.*)$ {
|
||||
try_files /images/$1 /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/campaigns/(.*)$ {
|
||||
try_files /campaigns/$1 /index.html =404;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
location /doceditor {
|
||||
proxy_pass http://127.0.0.1:5013;
|
||||
proxy_redirect off;
|
||||
|
||||
location ~* /static/favicon.ico {
|
||||
try_files /$basename /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/images/(.*)$ {
|
||||
location ~* /_next/public/images/(.*)$ {
|
||||
try_files /images/$1 /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/css/ {
|
||||
try_files /css/$basename /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/fonts/(?<content>[^/]+) {
|
||||
try_files /fonts/$content/$basename /index.html =404;
|
||||
}
|
||||
}
|
||||
|
||||
location /login {
|
||||
proxy_pass http://127.0.0.1:5011;
|
||||
proxy_redirect off;
|
||||
|
||||
location ~* /static/favicon.ico {
|
||||
try_files /$basename /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/images/(.*)$ {
|
||||
location ~* /_next/public/images/(.*)$ {
|
||||
try_files /images/$1 /index.html =404;
|
||||
}
|
||||
|
||||
location ~* /static/css/ {
|
||||
try_files /css/$basename /index.html =404;
|
||||
}
|
||||
}
|
||||
|
||||
location /management {
|
||||
@ -268,16 +277,36 @@ server {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
||||
location /openapi {
|
||||
proxy_pass http://127.0.0.1:5003;
|
||||
|
||||
location ~*/asc.web.api {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
||||
location ~*/asc.people {
|
||||
proxy_pass http://127.0.0.1:5004;
|
||||
}
|
||||
|
||||
location ~*/asc.files {
|
||||
proxy_pass http://127.0.0.1:5007;
|
||||
}
|
||||
|
||||
location ~*/asc.data.backup {
|
||||
proxy_pass http://127.0.0.1:5012;
|
||||
}
|
||||
}
|
||||
|
||||
location /api/2.0 {
|
||||
location ~* /(files|privacyroom) {
|
||||
proxy_pass http://127.0.0.1:5007;
|
||||
}
|
||||
|
||||
location ~* /(people|group) {
|
||||
location ~* /(people|group|accounts) {
|
||||
proxy_pass http://127.0.0.1:5004;
|
||||
}
|
||||
|
||||
location ~* /(authentication|modules|portal|security|settings|smtpsettings|capabilities|thirdparty|encryption|feed) {
|
||||
location ~* /(authentication|modules|portal|security|settings|smtpsettings|capabilities|thirdparty|encryption|feed|migration) {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
|
||||
location ~* portal/(.*)(backup|restore)(.*) {
|
||||
@ -296,8 +325,12 @@ server {
|
||||
location ~* /backup {
|
||||
proxy_pass http://127.0.0.1:5012;
|
||||
}
|
||||
|
||||
location ~* /migration {
|
||||
|
||||
location ~* /plugins {
|
||||
proxy_pass http://127.0.0.1:5014;
|
||||
}
|
||||
|
||||
location ~* /migration {
|
||||
proxy_pass http://127.0.0.1:5034;
|
||||
}
|
||||
|
||||
@ -343,10 +376,18 @@ server {
|
||||
proxy_pass http://127.0.0.1:5012;
|
||||
}
|
||||
|
||||
location /migrationFileUpload.ashx {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
||||
location /logoUploader.ashx {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
||||
location /logo.ashx {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
||||
location /payment.ashx {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
@ -377,4 +418,28 @@ server {
|
||||
rewrite /healthchecks/(.*)$ /$1 break;
|
||||
proxy_pass http://127.0.0.1:5033;
|
||||
}
|
||||
|
||||
error_page 401 /custom_401.html;
|
||||
location = /custom_401.html {
|
||||
root /etc/nginx/html;
|
||||
internal;
|
||||
}
|
||||
|
||||
error_page 403 /custom_403.html;
|
||||
location = /custom_403.html {
|
||||
root /etc/nginx/html;
|
||||
internal;
|
||||
}
|
||||
|
||||
error_page 404 /custom_404.html;
|
||||
location = /custom_404.html {
|
||||
root /etc/nginx/html;
|
||||
internal;
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /custom_50x.html;
|
||||
location = /custom_50x.html {
|
||||
root /etc/nginx/html;
|
||||
internal;
|
||||
}
|
||||
}
|
||||
|
@ -6,16 +6,17 @@
|
||||
<extensions>
|
||||
<add assembly="NLog.Web.AspNetCore"/>
|
||||
<add assembly="NLog.AWS.Logger" />
|
||||
<add assembly="NLog.Targets.ElasticSearch"/>
|
||||
</extensions>
|
||||
|
||||
<variable name="dir" value="..\Logs\"/>
|
||||
<variable name="name" value="web"/>
|
||||
|
||||
<targets async="true">
|
||||
<default-target-parameters type="File" maxArchiveDays="30" archiveNumbering="DateAndSequence" archiveEvery="Day" enableArchiveFileCompression="true" archiveAboveSize="52428800" archiveDateFormat="MM-dd" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff} ${level:uppercase=true} [${threadid}] ${logger} - ${message} ${exception:format=ToString}"/>
|
||||
<default-target-parameters type="File" maxArchiveDays="30" archiveNumbering="DateAndSequence" archiveEvery="Day" enableArchiveFileCompression="true" archiveAboveSize="52428800" archiveDateFormat="MM-dd" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff}|${level:uppercase=true}|[${threadid}]|${logger} - ${message}|${exception:format=ToString}"/>
|
||||
<target name="web" type="File" fileName="${var:dir}${var:name}.log" />
|
||||
<target name="sql" type="File" fileName="${var:dir}${var:name}.sql.log" layout="${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss,fff}|${threadid}|${event-properties:item=elapsed}|${replace:inner=${event-properties:item=commandText}:searchFor=\\r\\n|\\s:replaceWith= :regex=true}|${event-properties:item=parameters}"/>
|
||||
<target name="ownFile-web" type="File" fileName="${var:dir}${var:name}.asp.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
|
||||
<target name="ownFile-web" type="File" fileName="${var:dir}${var:name}.asp.log" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
|
||||
<target name="lifetimeConsole" type="Console" layout="${MicrosoftConsoleLayout}" />
|
||||
|
||||
<target type="AWSTarget" name="aws" logGroup="/asc/docspace/cluster/cluster_name/general" region="us-east-1" LogStreamNamePrefix="${hostname} - ${application-context}">
|
||||
@ -41,8 +42,12 @@
|
||||
<attribute name="commandText" layout="${replace:inner=${event-properties:item=commandText}:searchFor=\\r\\n|\\s:replaceWith= :regex=true}" />
|
||||
</layout>
|
||||
</target>
|
||||
<target name="elastic" xsi:type="BufferingWrapper" flushTimeout="5000">
|
||||
<target xsi:type="ElasticSearch" includeAllProperties="true" />
|
||||
</target>
|
||||
</targets>
|
||||
<rules>
|
||||
<logger name="ASC.Api.Core.Auth.CookieAuthHandler" maxlevel="Off" final="true" />
|
||||
<logger name="ASC.SQL" minlevel="Debug" writeTo="sql" final="true" />
|
||||
<logger name="ASC*" minlevel="Debug" writeTo="web">
|
||||
<filters defaultAction="Log">
|
||||
@ -54,6 +59,7 @@
|
||||
<when condition="regex-matches('${scope-property:RequestPath}', '^/health/?$', 'ignorecase,singleline')" action="Ignore" />
|
||||
</filters>
|
||||
</logger>
|
||||
<logger name="Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware" maxlevel="Information" writeTo="ownFile-web" final="true" />
|
||||
<logger name="Microsoft.*" maxlevel="Off" final="true" />
|
||||
<logger name="System.Net.Http.*" maxlevel="Info" final="true" />
|
||||
</rules>
|
||||
|
@ -87,7 +87,8 @@
|
||||
"type": "disc",
|
||||
"path": "$STORAGE_ROOT\\Studio\\{0}\\CoBranding",
|
||||
"virtualpath": "~/studio/{0}/cobranding",
|
||||
"public": true
|
||||
"public": true,
|
||||
"contentAsAttachment": true
|
||||
},
|
||||
{
|
||||
"name": "static_partnerdata",
|
||||
@ -114,6 +115,22 @@
|
||||
"path": "$STORAGE_ROOT\\Studio\\{0}\\temp\\backup",
|
||||
"expires": "0:10:0",
|
||||
"disableEncryption": true
|
||||
},
|
||||
{
|
||||
"name": "migration",
|
||||
"visible": false,
|
||||
"type": "disc",
|
||||
"path": "$STORAGE_ROOT\\Studio\\{0}\\migration",
|
||||
"expires": "0:10:0",
|
||||
"disableEncryption": true
|
||||
},
|
||||
{
|
||||
"name": "migration_log",
|
||||
"visible": false,
|
||||
"type": "disc",
|
||||
"path": "$STORAGE_ROOT\\Studio\\{0}\\log\\migration",
|
||||
"expires": "0:10:0",
|
||||
"disableEncryption": true
|
||||
},
|
||||
{
|
||||
"name": "customnavigation",
|
||||
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Zookeeper": {
|
||||
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Zookeeper": {
|
||||
"host": "localhost",
|
||||
"port": 2181
|
||||
}
|
||||
}
|
@ -35,6 +35,7 @@ PARAMETERS="$PARAMETERS -it COMMUNITY";
|
||||
DOCKER="";
|
||||
LOCAL_SCRIPTS="false"
|
||||
product="docspace"
|
||||
product_sysname="onlyoffice";
|
||||
FILE_NAME="$(basename "$0")"
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
@ -104,7 +105,7 @@ install_curl () {
|
||||
}
|
||||
|
||||
read_installation_method () {
|
||||
echo "Select 'Y' to install ONLYOFFICE $product using Docker (recommended). Select 'N' to install it using RPM/DEB packages.";
|
||||
echo "Select 'Y' to install ${product_sysname^^} $product using Docker (recommended). Select 'N' to install it using RPM/DEB packages.";
|
||||
read -p "Install with Docker [Y/N/C]? " choice
|
||||
case "$choice" in
|
||||
y|Y )
|
||||
@ -135,14 +136,22 @@ if ! command_exists curl ; then
|
||||
install_curl;
|
||||
fi
|
||||
|
||||
if command_exists docker &> /dev/null && docker ps -a --format '{{.Names}}' | grep -q "${product_sysname}-api"; then
|
||||
DOCKER="true"
|
||||
elif command_exists apt-get &> /dev/null && dpkg -s ${product}-api >/dev/null 2>&1; then
|
||||
DOCKER="false"
|
||||
elif command_exists yum &> /dev/null && rpm -q ${product}-api >/dev/null 2>&1; then
|
||||
DOCKER="false"
|
||||
fi
|
||||
|
||||
if [ -z "$DOCKER" ]; then
|
||||
read_installation_method;
|
||||
fi
|
||||
|
||||
if [ -z $GIT_BRANCH ]; then
|
||||
DOWNLOAD_URL_PREFIX="https://download.onlyoffice.com/${product}"
|
||||
DOWNLOAD_URL_PREFIX="https://download.${product_sysname}.com/${product}"
|
||||
else
|
||||
DOWNLOAD_URL_PREFIX="https://raw.githubusercontent.com/ONLYOFFICE/${product}-buildtools/${GIT_BRANCH}/install/OneClickInstall"
|
||||
DOWNLOAD_URL_PREFIX="https://raw.githubusercontent.com/${product_sysname^^}/${product}-buildtools/${GIT_BRANCH}/install/OneClickInstall"
|
||||
fi
|
||||
|
||||
if [ "$DOCKER" == "true" ]; then
|
||||
|
@ -13,6 +13,7 @@ RES_APP_CHECK_PORTS="uses ports"
|
||||
RES_CHECK_PORTS="please, make sure that the ports are free.";
|
||||
RES_INSTALL_SUCCESS="Thank you for installing ONLYOFFICE ${product_name}.";
|
||||
RES_QUESTIONS="In case you have any questions contact us via http://support.onlyoffice.com or visit our forum at http://forum.onlyoffice.com"
|
||||
INSTALL_FLUENT_BIT="true"
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
@ -53,6 +54,27 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-ifb | --installfluentbit )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_FLUENT_BIT=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-du | --dashboadrsusername )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_USERNAME=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-dp | --dashboadrspassword )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_PASSWORD=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-ls | --localscripts )
|
||||
if [ "$2" != "" ]; then
|
||||
LOCAL_SCRIPTS=$2
|
||||
@ -89,6 +111,9 @@ while [ "$1" != "" ]; do
|
||||
echo " -je, --jwtenabled specifies the enabling the JWT validation (true|false)"
|
||||
echo " -jh, --jwtheader defines the http header that will be used to send the JWT"
|
||||
echo " -js, --jwtsecret defines the secret key to validate the JWT in the request"
|
||||
echo " -ifb, --installfluentbit install or update fluent-bit (true|false)"
|
||||
echo " -du, --dashboadrsusername login for authorization in /dashboards/"
|
||||
echo " -dp, --dashboadrspassword password for authorization in /dashboards/"
|
||||
echo " -ls, --local_scripts use 'true' to run local scripts (true|false)"
|
||||
echo " -skiphc, --skiphardwarecheck use to skip hardware check (true|false)"
|
||||
echo " -ms, --makeswap make swap file (true|false)"
|
||||
|
@ -79,12 +79,14 @@ elif [ "$UPDATE" = "true" ] && [ "$PRODUCT_INSTALLED" = "true" ]; then
|
||||
CURRENT_VERSION=$(dpkg-query -W -f='${Version}' ${product} 2>/dev/null)
|
||||
AVAILABLE_VERSIONS=$(apt show ${product} 2>/dev/null | grep -E '^Version:' | awk '{print $2}')
|
||||
if [[ "$AVAILABLE_VERSIONS" != *"$CURRENT_VERSION"* ]]; then
|
||||
apt-get install -o DPkg::options::="--force-confnew" -y --only-upgrade ${product} elasticsearch=${ELASTIC_VERSION}
|
||||
apt-get install -o DPkg::options::="--force-confnew" -y --only-upgrade ${product} opensearch=${ELASTIC_VERSION}
|
||||
elif [ "${RECONFIGURE_PRODUCT}" = "true" ]; then
|
||||
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure ${product}
|
||||
fi
|
||||
fi
|
||||
|
||||
hold_package_version dotnet-host opensearch redis-server rabbitmq-server opensearch-dashboards fluent-bit
|
||||
|
||||
if [ "$MAKESWAP" == "true" ]; then
|
||||
make_swap
|
||||
fi
|
||||
|
@ -31,21 +31,28 @@ fi
|
||||
|
||||
locale-gen en_US.UTF-8
|
||||
|
||||
# add elasticsearch repo
|
||||
ELASTIC_VERSION="7.16.3"
|
||||
ELASTIC_DIST=$(echo $ELASTIC_VERSION | awk '{ print int($1) }')
|
||||
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/elastic-${ELASTIC_DIST}.x.gpg --import
|
||||
echo "deb [signed-by=/usr/share/keyrings/elastic-${ELASTIC_DIST}.x.gpg] https://artifacts.elastic.co/packages/${ELASTIC_DIST}.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-${ELASTIC_DIST}.x.list
|
||||
chmod 644 /usr/share/keyrings/elastic-${ELASTIC_DIST}.x.gpg
|
||||
# add opensearch repo
|
||||
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
|
||||
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" >> /etc/apt/sources.list.d/opensearch-2.x.list
|
||||
ELASTIC_VERSION="2.11.1"
|
||||
|
||||
#add opensearch dashboards repo
|
||||
if [ ${INSTALL_FLUENT_BIT} == "true" ]; then
|
||||
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
|
||||
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/apt stable main" >> /etc/apt/sources.list.d/opensearch-dashboards-2.x.list
|
||||
DASHBOARDS_VERSION="2.11.1"
|
||||
fi
|
||||
|
||||
# add nodejs repo
|
||||
NODE_VERSION="18"
|
||||
curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash -
|
||||
|
||||
#add dotnet repo
|
||||
curl https://packages.microsoft.com/config/$DIST/$REV/packages-microsoft-prod.deb -O
|
||||
echo -e "Package: *\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 1002" | tee /etc/apt/preferences.d/99microsoft-prod.pref
|
||||
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb
|
||||
if [[ "$DISTRIB_CODENAME" != noble ]]; then
|
||||
curl https://packages.microsoft.com/config/$DIST/$REV/packages-microsoft-prod.deb -O
|
||||
echo -e "Package: *\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 1002" | tee /etc/apt/preferences.d/99microsoft-prod.pref
|
||||
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb
|
||||
fi
|
||||
|
||||
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP 'mysql-apt-config_\K.*' | grep -o '^[^_]*' | sort --version-sort --field-separator=. | tail -n1)"
|
||||
MYSQL_PACKAGE_NAME="mysql-apt-config_${MYSQL_REPO_VERSION}_all.deb"
|
||||
@ -56,19 +63,19 @@ if ! dpkg -l | grep -q "mysql-server"; then
|
||||
MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"}
|
||||
MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-"$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12)"}
|
||||
|
||||
# setup mysql 8.0 package
|
||||
# setup mysql 8.4 package
|
||||
curl -OL http://repo.mysql.com/${MYSQL_PACKAGE_NAME}
|
||||
echo "mysql-apt-config mysql-apt-config/repo-codename select $DISTRIB_CODENAME" | debconf-set-selections
|
||||
echo "mysql-apt-config mysql-apt-config/repo-distro select $DIST" | debconf-set-selections
|
||||
echo "mysql-apt-config mysql-apt-config/select-server select mysql-8.0" | debconf-set-selections
|
||||
echo "mysql-apt-config mysql-apt-config/select-server select mysql-8.4-lts" | debconf-set-selections
|
||||
DEBIAN_FRONTEND=noninteractive dpkg -i ${MYSQL_PACKAGE_NAME}
|
||||
rm -f ${MYSQL_PACKAGE_NAME}
|
||||
|
||||
echo mysql-community-server mysql-community-server/root-pass password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
echo mysql-community-server mysql-community-server/re-root-pass password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
echo mysql-community-server mysql-server/default-auth-override select "Use Strong Password Encryption (RECOMMENDED)" | debconf-set-selections
|
||||
echo mysql-server-8.0 mysql-server/root_password password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
echo mysql-server-8.0 mysql-server/root_password_again password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
echo mysql-server mysql-server/root_password password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
echo mysql-server mysql-server/root_password_again password ${MYSQL_SERVER_PASS} | debconf-set-selections
|
||||
|
||||
elif dpkg -l | grep -q "mysql-apt-config" && [ "$(apt-cache policy mysql-apt-config | awk 'NR==2{print $2}')" != "${MYSQL_REPO_VERSION}" ]; then
|
||||
curl -OL http://repo.mysql.com/${MYSQL_PACKAGE_NAME}
|
||||
@ -76,23 +83,27 @@ elif dpkg -l | grep -q "mysql-apt-config" && [ "$(apt-cache policy mysql-apt-con
|
||||
rm -f ${MYSQL_PACKAGE_NAME}
|
||||
fi
|
||||
|
||||
# add redis repo
|
||||
# add redis repo --- temporary fix for complete installation on Ubuntu 24.04. REDIS_DIST_CODENAME change to DISTRIB_CODENAME
|
||||
if [ "$DIST" = "ubuntu" ]; then
|
||||
[[ "$DISTRIB_CODENAME" =~ noble ]] && REDIS_DIST_CODENAME="jammy" || REDIS_DIST_CODENAME="${DISTRIB_CODENAME}"
|
||||
curl -fsSL https://packages.redis.io/gpg | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/redis.gpg --import
|
||||
echo "deb [signed-by=/usr/share/keyrings/redis.gpg] https://packages.redis.io/deb $DISTRIB_CODENAME main" | tee /etc/apt/sources.list.d/redis.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/redis.gpg] https://packages.redis.io/deb $REDIS_DIST_CODENAME main" | tee /etc/apt/sources.list.d/redis.list
|
||||
chmod 644 /usr/share/keyrings/redis.gpg
|
||||
fi
|
||||
|
||||
#add nginx repo
|
||||
curl -s http://nginx.org/keys/nginx_signing.key | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/nginx.gpg --import
|
||||
echo "deb [signed-by=/usr/share/keyrings/nginx.gpg] http://nginx.org/packages/$DIST/ $DISTRIB_CODENAME nginx" | tee /etc/apt/sources.list.d/nginx.list
|
||||
chmod 644 /usr/share/keyrings/nginx.gpg
|
||||
#f for missing nginx repository for debian bookworm
|
||||
if [[ "$DISTRIB_CODENAME" != noble ]]; then
|
||||
curl -s http://nginx.org/keys/nginx_signing.key | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/nginx.gpg --import
|
||||
echo "deb [signed-by=/usr/share/keyrings/nginx.gpg] http://nginx.org/packages/$DIST/ $DISTRIB_CODENAME nginx" | tee /etc/apt/sources.list.d/nginx.list
|
||||
chmod 644 /usr/share/keyrings/nginx.gpg
|
||||
fi
|
||||
# Fix for missing nginx repository for debian bookworm
|
||||
[ "$DISTRIB_CODENAME" = "bookworm" ] && sed -i "s/$DISTRIB_CODENAME/buster/g" /etc/apt/sources.list.d/nginx.list
|
||||
|
||||
#add openresty repo
|
||||
#add openresty repo --- temporary fix for complete installation on Ubuntu 24.04: OPENRESTY_DIST_CODENAME change to DISTRIB_CODENAME
|
||||
[[ "$DISTRIB_CODENAME" =~ noble ]] && OPENRESTY_DIST_CODENAME="jammy" || OPENRESTY_DIST_CODENAME="${DISTRIB_CODENAME}"
|
||||
curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/openresty.gpg --import
|
||||
echo "deb [signed-by=/usr/share/keyrings/openresty.gpg] http://openresty.org/package/$DIST $DISTRIB_CODENAME $([ "$DIST" = "ubuntu" ] && echo "main" || echo "openresty" )" | tee /etc/apt/sources.list.d/openresty.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/openresty.gpg] http://openresty.org/package/$DIST $OPENRESTY_DIST_CODENAME $([ "$DIST" = "ubuntu" ] && echo "main" || echo "openresty" )" | tee /etc/apt/sources.list.d/openresty.list
|
||||
chmod 644 /usr/share/keyrings/openresty.gpg
|
||||
|
||||
# setup msttcorefonts
|
||||
@ -114,8 +125,16 @@ apt-get install -o DPkg::options::="--force-confnew" -yq \
|
||||
rabbitmq-server \
|
||||
ffmpeg
|
||||
|
||||
if ! dpkg -l | grep -q "elasticsearch"; then
|
||||
apt-get install -yq elasticsearch=${ELASTIC_VERSION}
|
||||
if ! dpkg -l | grep -q "opensearch"; then
|
||||
apt-get install -yq opensearch=${ELASTIC_VERSION}
|
||||
fi
|
||||
|
||||
if [ ${INSTALL_FLUENT_BIT} == "true" ]; then
|
||||
[[ "$DISTRIB_CODENAME" =~ noble ]] && FLUENTBIT_DIST_CODENAME="jammy" || FLUENTBIT_DIST_CODENAME="${DISTRIB_CODENAME}"
|
||||
curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/$DIST/$FLUENTBIT_DIST_CODENAME $FLUENTBIT_DIST_CODENAME main" | tee /etc/apt/sources.list.d/fluent-bit.list
|
||||
apt update
|
||||
apt-get install -yq opensearch-dashboards=${DASHBOARDS_VERSION} fluent-bit
|
||||
fi
|
||||
|
||||
# disable apparmor for mysql
|
||||
|
@ -5,7 +5,7 @@ set -e
|
||||
make_swap () {
|
||||
DISK_REQUIREMENTS=6144; #6Gb free space
|
||||
MEMORY_REQUIREMENTS=12000; #RAM ~12Gb
|
||||
SWAPFILE="/${PRODUCT}_swapfile";
|
||||
SWAPFILE="/${product}_swapfile";
|
||||
|
||||
AVAILABLE_DISK_SPACE=$(df -m / | tail -1 | awk '{ print $4 }');
|
||||
TOTAL_MEMORY=$(free --mega | grep -oP '\d+' | head -n 1);
|
||||
@ -24,6 +24,18 @@ command_exists () {
|
||||
type "$1" &> /dev/null;
|
||||
}
|
||||
|
||||
# Function to prevent package auto-update
|
||||
hold_package_version() {
|
||||
for package in "$@"; do
|
||||
if command -v apt-mark >/dev/null 2>&1 &&
|
||||
dpkg -s "$package" >/dev/null 2>&1 &&
|
||||
! apt-mark showhold | grep -q "$package" >/dev/null 2>&1
|
||||
then
|
||||
apt-mark hold "$package"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_hardware () {
|
||||
DISK_REQUIREMENTS=40960;
|
||||
MEMORY_REQUIREMENTS=8000;
|
||||
|
@ -60,6 +60,7 @@ INSTALL_RABBITMQ="true";
|
||||
INSTALL_MYSQL_SERVER="true";
|
||||
INSTALL_DOCUMENT_SERVER="true";
|
||||
INSTALL_ELASTICSEARCH="true";
|
||||
INSTALL_FLUENT_BIT="false";
|
||||
INSTALL_PRODUCT="true";
|
||||
UPDATE="false";
|
||||
|
||||
@ -372,6 +373,13 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-ifb | --installfluentbit )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_FLUENT_BIT=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-rdsh | --redishost )
|
||||
if [ "$2" != "" ]; then
|
||||
REDIS_HOST=$2
|
||||
@ -463,6 +471,27 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-du | --dashboadrsusername )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_USERNAME=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-dp | --dashboadrspassword )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_PASSWORD=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-noni | --noninteractive )
|
||||
if [ "$2" != "" ]; then
|
||||
NON_INTERACTIVE=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-? | -h | --help )
|
||||
echo " Usage: bash $HELP_TARGET [PARAMETER] [[PARAMETER], ...]"
|
||||
echo
|
||||
@ -489,6 +518,9 @@ while [ "$1" != "" ]; do
|
||||
echo " -irds, --installredis install or update redis (true|false)"
|
||||
echo " -imysql, --installmysql install or update mysql (true|false)"
|
||||
echo " -ies, --installelastic install or update elasticsearch (true|false)"
|
||||
echo " -ifb, --installfluentbit install or update fluent-bit (true|false)"
|
||||
echo " -du, --dashboadrsusername login for authorization in /dashboards/"
|
||||
echo " -dp, --dashboadrspassword password for authorization in /dashboards/"
|
||||
echo " -espr, --elasticprotocol the protocol for the connection to elasticsearch (default value http)"
|
||||
echo " -esh, --elastichost the IP address or hostname of the elasticsearch"
|
||||
echo " -esp, --elasticport elasticsearch port number (default value 9200)"
|
||||
@ -511,6 +543,7 @@ while [ "$1" != "" ]; do
|
||||
echo " -lem, --letsencryptmail defines the domain administator mail address for Let's Encrypt certificate"
|
||||
echo " -cf, --certfile path to the certificate file for the domain"
|
||||
echo " -ckf, --certkeyfile path to the private key file for the certificate"
|
||||
echo " -noni, --noninteractive auto confirm all questions (true|false)"
|
||||
echo " -dbm, --databasemigration database migration (true|false)"
|
||||
echo " -ms, --makeswap make swap file (true|false)"
|
||||
echo " -?, -h, --help this help"
|
||||
@ -642,8 +675,8 @@ get_os_info () {
|
||||
fi
|
||||
fi
|
||||
|
||||
DIST=$(trim $DIST);
|
||||
REV=$(trim $REV);
|
||||
DIST=$(trim "$DIST")
|
||||
fi
|
||||
}
|
||||
|
||||
@ -830,13 +863,22 @@ install_docker () {
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
|
||||
elif [ "${DIST}" == "Red Hat Enterprise Linux Server" ]; then
|
||||
elif [[ "${DIST}" == Red\ Hat\ Enterprise\ Linux* ]]; then
|
||||
|
||||
echo ""
|
||||
echo "Your operating system does not allow Docker CE installation."
|
||||
echo "You can install Docker EE using the manual here - https://docs.docker.com/engine/installation/linux/rhel/"
|
||||
echo ""
|
||||
exit 1;
|
||||
if [[ "${REV}" -gt "7" ]]; then
|
||||
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc > null
|
||||
yum install -y yum-utils
|
||||
yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
|
||||
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
else
|
||||
echo ""
|
||||
echo "Your operating system does not allow Docker CE installation."
|
||||
echo "You can install Docker EE using the manual here - https://docs.docker.com/engine/installation/linux/rhel/"
|
||||
echo ""
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
elif [ "${DIST}" == "SuSe" ]; then
|
||||
|
||||
@ -884,6 +926,10 @@ create_network () {
|
||||
}
|
||||
|
||||
read_continue_installation () {
|
||||
if [[ "${NON_INTERACTIVE}" = "true" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
read -p "Continue installation [Y/N]? " CHOICE_INSTALLATION
|
||||
case "$CHOICE_INSTALLATION" in
|
||||
y|Y )
|
||||
@ -1109,6 +1155,7 @@ set_docspace_params() {
|
||||
APP_CORE_BASE_DOMAIN=${APP_CORE_BASE_DOMAIN:-$(get_env_parameter "APP_CORE_BASE_DOMAIN" "${CONTAINER_NAME}")};
|
||||
EXTERNAL_PORT=${EXTERNAL_PORT:-$(get_env_parameter "EXTERNAL_PORT" "${CONTAINER_NAME}")};
|
||||
|
||||
PREVIOUS_ELK_VERSION=$(get_env_parameter "ELK_VERSION");
|
||||
ELK_SHEME=${ELK_SHEME:-$(get_env_parameter "ELK_SHEME" "${CONTAINER_NAME}")};
|
||||
ELK_HOST=${ELK_HOST:-$(get_env_parameter "ELK_HOST" "${CONTAINER_NAME}")};
|
||||
ELK_PORT=${ELK_PORT:-$(get_env_parameter "ELK_PORT" "${CONTAINER_NAME}")};
|
||||
@ -1124,6 +1171,9 @@ set_docspace_params() {
|
||||
RABBIT_PASSWORD=${RABBIT_PASSWORD:-$(get_env_parameter "RABBIT_PASSWORD" "${CONTAINER_NAME}")};
|
||||
RABBIT_VIRTUAL_HOST=${RABBIT_VIRTUAL_HOST:-$(get_env_parameter "RABBIT_VIRTUAL_HOST" "${CONTAINER_NAME}")};
|
||||
|
||||
DASHBOARDS_USERNAME=${DASHBOARDS_USERNAME:-$(get_env_parameter "DASHBOARDS_USERNAME" "${CONTAINER_NAME}")};
|
||||
DASHBOARDS_PASSWORD=${DASHBOARDS_PASSWORD:-$(get_env_parameter "DASHBOARDS_PASSWORD" "${CONTAINER_NAME}")};
|
||||
|
||||
CERTIFICATE_PATH=${CERTIFICATE_PATH:-$(get_env_parameter "CERTIFICATE_PATH")};
|
||||
CERTIFICATE_KEY_PATH=${CERTIFICATE_KEY_PATH:-$(get_env_parameter "CERTIFICATE_KEY_PATH")};
|
||||
DHPARAM_PATH=${DHPARAM_PATH:-$(get_env_parameter "DHPARAM_PATH")};
|
||||
@ -1195,10 +1245,12 @@ install_mysql_server () {
|
||||
reconfigure MYSQL_USER ${MYSQL_USER}
|
||||
reconfigure MYSQL_PASSWORD ${MYSQL_PASSWORD}
|
||||
reconfigure MYSQL_ROOT_PASSWORD ${MYSQL_ROOT_PASSWORD}
|
||||
reconfigure MYSQL_VERSION ${MYSQL_VERSION}
|
||||
|
||||
if [[ -z ${MYSQL_HOST} ]] && [ "$INSTALL_MYSQL_SERVER" == "true" ]; then
|
||||
reconfigure MYSQL_VERSION ${MYSQL_VERSION}
|
||||
if [[ -z ${MYSQL_HOST} ]] && [ "$INSTALL_MYSQL_SERVER" == "true" ]; then
|
||||
docker-compose -f $BASE_DIR/db.yml up -d
|
||||
elif [ "$INSTALL_MYSQL_SERVER" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/db.yml pull
|
||||
elif [ ! -z "$MYSQL_HOST" ]; then
|
||||
establish_conn ${MYSQL_HOST} "${MYSQL_PORT:-"3306"}" "MySQL"
|
||||
reconfigure MYSQL_HOST ${MYSQL_HOST}
|
||||
@ -1209,9 +1261,11 @@ install_mysql_server () {
|
||||
install_document_server () {
|
||||
reconfigure DOCUMENT_SERVER_JWT_HEADER ${DOCUMENT_SERVER_JWT_HEADER}
|
||||
reconfigure DOCUMENT_SERVER_JWT_SECRET ${DOCUMENT_SERVER_JWT_SECRET}
|
||||
reconfigure DOCUMENT_SERVER_IMAGE_NAME "${DOCUMENT_SERVER_IMAGE_NAME}:${DOCUMENT_SERVER_VERSION:-$(get_available_version "$DOCUMENT_SERVER_IMAGE_NAME")}"
|
||||
if [[ -z ${DOCUMENT_SERVER_HOST} ]] && [ "$INSTALL_DOCUMENT_SERVER" == "true" ]; then
|
||||
reconfigure DOCUMENT_SERVER_IMAGE_NAME "${DOCUMENT_SERVER_IMAGE_NAME}:${DOCUMENT_SERVER_VERSION:-$(get_available_version "$DOCUMENT_SERVER_IMAGE_NAME")}"
|
||||
docker-compose -f $BASE_DIR/ds.yml up -d
|
||||
elif [ "$INSTALL_DOCUMENT_SERVER" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/ds.yml pull
|
||||
elif [ ! -z "$DOCUMENT_SERVER_HOST" ]; then
|
||||
APP_URL_PORTAL=${APP_URL_PORTAL:-"http://$(curl -s ifconfig.me):${EXTERNAL_PORT}"}
|
||||
establish_conn ${DOCUMENT_SERVER_HOST} ${DOCUMENT_SERVER_PORT} "${PACKAGE_SYSNAME^^} Docs"
|
||||
@ -1223,6 +1277,8 @@ install_document_server () {
|
||||
install_rabbitmq () {
|
||||
if [[ -z ${RABBIT_HOST} ]] && [ "$INSTALL_RABBITMQ" == "true" ]; then
|
||||
docker-compose -f $BASE_DIR/rabbitmq.yml up -d
|
||||
elif [ "$INSTALL_RABBITMQ" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/rabbitmq.yml pull
|
||||
elif [ ! -z "$RABBIT_HOST" ]; then
|
||||
establish_conn ${RABBIT_HOST} "${RABBIT_PORT:-"5672"}" "RabbitMQ"
|
||||
reconfigure RABBIT_HOST ${RABBIT_HOST}
|
||||
@ -1236,6 +1292,8 @@ install_rabbitmq () {
|
||||
install_redis () {
|
||||
if [[ -z ${REDIS_HOST} ]] && [ "$INSTALL_REDIS" == "true" ]; then
|
||||
docker-compose -f $BASE_DIR/redis.yml up -d
|
||||
elif [ "$INSTALL_REDIS" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/redis.yml pull
|
||||
elif [ ! -z "$REDIS_HOST" ]; then
|
||||
establish_conn ${REDIS_HOST} "${REDIS_PORT:-"6379"}" "Redis"
|
||||
reconfigure REDIS_HOST ${REDIS_HOST}
|
||||
@ -1246,50 +1304,112 @@ install_redis () {
|
||||
}
|
||||
|
||||
install_elasticsearch () {
|
||||
reconfigure ELK_VERSION ${ELK_VERSION}
|
||||
if [[ -z ${ELK_HOST} ]] && [ "$INSTALL_ELASTICSEARCH" == "true" ]; then
|
||||
if [ $(free --mega | grep -oP '\d+' | head -n 1) -gt "12000" ]; then #RAM ~12Gb
|
||||
sed -i 's/Xms[0-9]g/Xms4g/g; s/Xmx[0-9]g/Xmx4g/g' $BASE_DIR/elasticsearch.yml
|
||||
sed -i 's/Xms[0-9]g/Xms4g/g; s/Xmx[0-9]g/Xmx4g/g' $BASE_DIR/opensearch.yml
|
||||
else
|
||||
sed -i 's/Xms[0-9]g/Xms1g/g; s/Xmx[0-9]g/Xmx1g/g' $BASE_DIR/elasticsearch.yml
|
||||
sed -i 's/Xms[0-9]g/Xms1g/g; s/Xmx[0-9]g/Xmx1g/g' $BASE_DIR/opensearch.yml
|
||||
fi
|
||||
reconfigure ELK_VERSION ${ELK_VERSION}
|
||||
docker-compose -f $BASE_DIR/elasticsearch.yml up -d
|
||||
docker-compose -f $BASE_DIR/opensearch.yml up -d
|
||||
elif [ "$INSTALL_ELASTICSEARCH" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/opensearch.yml pull
|
||||
elif [ ! -z "$ELK_HOST" ]; then
|
||||
establish_conn ${ELK_HOST} "${ELK_PORT:-"9200"}" "Elasticsearch"
|
||||
establish_conn ${ELK_HOST} "${ELK_PORT:-"9200"}" "search engine"
|
||||
reconfigure ELK_SHEME "${ELK_SHEME:-"http"}"
|
||||
reconfigure ELK_HOST ${ELK_HOST}
|
||||
reconfigure ELK_PORT "${ELK_PORT:-"9200"}"
|
||||
fi
|
||||
}
|
||||
|
||||
install_fluent_bit () {
|
||||
if [ "$INSTALL_FLUENT_BIT" == "true" ]; then
|
||||
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
|
||||
systemctl enable fluent-bit
|
||||
|
||||
if systemctl list-unit-files --type=service | grep -q "fluent-bit.service"; then
|
||||
sed -i "s/OPENSEARCH_SCHEME/$(get_env_parameter "ELK_SHEME")/g" "${BASE_DIR}/config/fluent-bit.conf"
|
||||
sed -i "s/OPENSEARCH_HOST/${ELK_HOST:-127.0.0.1}/g" "${BASE_DIR}/config/fluent-bit.conf"
|
||||
sed -i "s/OPENSEARCH_PORT/$(get_env_parameter "ELK_PORT")/g" ${BASE_DIR}/config/fluent-bit.conf
|
||||
sed -i "s/OPENSEARCH_INDEX/${OPENSEARCH_INDEX:-"${PACKAGE_SYSNAME}-fluent-bit"}/g" ${BASE_DIR}/config/fluent-bit.conf
|
||||
[ ! -z "${ELK_HOST}" ] && sed -i "s/ELK_CONTAINER_NAME/ELK_HOST/g" ${BASE_DIR}/dashboards.yml
|
||||
cp -rf ${BASE_DIR}/config/fluent-bit.conf /etc/fluent-bit/fluent-bit.conf
|
||||
systemctl restart fluent-bit
|
||||
|
||||
DOCKER_SYSTEMD_DIR="/etc/systemd/system/docker.service.d"
|
||||
if [ ! -f "${DOCKER_SYSTEMD_DIR}/fluent-after.conf" ]; then
|
||||
mkdir -p ${DOCKER_SYSTEMD_DIR}
|
||||
echo -e "[Unit]\n$(grep After= $(systemctl show -p FragmentPath docker.service | awk -F= '{print $2}')) fluent-bit.service" > "${DOCKER_SYSTEMD_DIR}/fluent-after.conf"
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
DOCKER_DAEMON_FILE="/etc/docker/daemon.json"
|
||||
if [[ ! -f "${DOCKER_DAEMON_FILE}" ]]; then
|
||||
echo "{\"log-driver\": \"fluentd\", \"log-opts\": { \"fluentd-address\": \"127.0.0.1:24224\" }}" > "${DOCKER_DAEMON_FILE}"
|
||||
systemctl restart docker
|
||||
elif ! grep -q "log-driver" ${DOCKER_DAEMON_FILE}; then
|
||||
sed -i 's!{!& "log-driver": "fluentd", "log-opts": { "fluentd-address": "127.0.0.1:24224" },!' "${DOCKER_DAEMON_FILE}"
|
||||
systemctl restart docker
|
||||
fi
|
||||
|
||||
reconfigure DASHBOARDS_USERNAME "${DASHBOARDS_USERNAME:-"onlyoffice"}"
|
||||
reconfigure DASHBOARDS_PASSWORD "${DASHBOARDS_PASSWORD:-$(get_random_str 20)}"
|
||||
|
||||
docker-compose -f ${BASE_DIR}/dashboards.yml up -d
|
||||
else
|
||||
echo "The installation of the fluent-bit service was unsuccessful."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
install_product () {
|
||||
DOCKER_TAG="${DOCKER_TAG:-$(get_available_version ${IMAGE_NAME})}"
|
||||
reconfigure DOCKER_TAG ${DOCKER_TAG}
|
||||
if [ "$INSTALL_PRODUCT" == "true" ]; then
|
||||
[ "${UPDATE}" = "true" ] && LOCAL_CONTAINER_TAG="$(docker inspect --format='{{index .Config.Image}}' ${CONTAINER_NAME} | awk -F':' '{print $2}')"
|
||||
|
||||
[ "${UPDATE}" = "true" ] && LOCAL_CONTAINER_TAG="$(docker inspect --format='{{index .Config.Image}}' ${CONTAINER_NAME} | awk -F':' '{print $2}')"
|
||||
if [ "${UPDATE}" = "true" ] && [ "${LOCAL_CONTAINER_TAG}" != "${DOCKER_TAG}" ]; then
|
||||
docker-compose -f $BASE_DIR/build.yml pull
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml -f $BASE_DIR/notify.yml -f $BASE_DIR/healthchecks.yml -f ${PROXY_YML} down
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml down --volumes
|
||||
fi
|
||||
|
||||
if [ "${UPDATE}" = "true" ] && [ "${LOCAL_CONTAINER_TAG}" != "${DOCKER_TAG}" ]; then
|
||||
docker-compose -f $BASE_DIR/build.yml pull
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml -f $BASE_DIR/notify.yml -f $BASE_DIR/healthchecks.yml -f ${PROXY_YML} down
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml down --volumes
|
||||
fi
|
||||
reconfigure ENV_EXTENSION ${ENV_EXTENSION}
|
||||
reconfigure APP_CORE_MACHINEKEY ${APP_CORE_MACHINEKEY}
|
||||
reconfigure APP_CORE_BASE_DOMAIN ${APP_CORE_BASE_DOMAIN}
|
||||
reconfigure APP_URL_PORTAL "${APP_URL_PORTAL:-"http://${PACKAGE_SYSNAME}-router:8092"}"
|
||||
reconfigure EXTERNAL_PORT ${EXTERNAL_PORT}
|
||||
|
||||
reconfigure ENV_EXTENSION ${ENV_EXTENSION}
|
||||
reconfigure APP_CORE_MACHINEKEY ${APP_CORE_MACHINEKEY}
|
||||
reconfigure APP_CORE_BASE_DOMAIN ${APP_CORE_BASE_DOMAIN}
|
||||
reconfigure APP_URL_PORTAL "${APP_URL_PORTAL:-"http://${PACKAGE_SYSNAME}-router:8092"}"
|
||||
reconfigure EXTERNAL_PORT ${EXTERNAL_PORT}
|
||||
if [[ -z ${MYSQL_HOST} ]] && [ "$INSTALL_MYSQL_SERVER" == "true" ]; then
|
||||
echo -n "Waiting for MySQL container to become healthy..."
|
||||
(timeout 30 bash -c "while ! docker inspect --format '{{json .State.Health.Status }}' ${PACKAGE_SYSNAME}-mysql-server | grep -q 'healthy'; do sleep 1; done") && echo "OK" || (echo "FAILED")
|
||||
fi
|
||||
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml up -d
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml up -d
|
||||
docker-compose -f ${PROXY_YML} up -d
|
||||
docker-compose -f $BASE_DIR/notify.yml up -d
|
||||
docker-compose -f $BASE_DIR/healthchecks.yml up -d
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml up -d
|
||||
echo -n "Waiting for database migration to complete..." && docker wait ${PACKAGE_SYSNAME}-migration-runner && echo "OK"
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml up -d
|
||||
docker-compose -f ${PROXY_YML} up -d
|
||||
docker-compose -f $BASE_DIR/notify.yml up -d
|
||||
docker-compose -f $BASE_DIR/healthchecks.yml up -d
|
||||
|
||||
if [ ! -z "${CERTIFICATE_PATH}" ] && [ ! -z "${CERTIFICATE_KEY_PATH}" ] && [[ ! -z "${APP_DOMAIN_PORTAL}" ]]; then
|
||||
bash $BASE_DIR/config/${PRODUCT}-ssl-setup -f "${APP_DOMAIN_PORTAL}" "${CERTIFICATE_PATH}" "${CERTIFICATE_KEY_PATH}"
|
||||
elif [ ! -z "${LETS_ENCRYPT_DOMAIN}" ] && [ ! -z "${LETS_ENCRYPT_MAIL}" ]; then
|
||||
bash $BASE_DIR/config/${PRODUCT}-ssl-setup "${LETS_ENCRYPT_MAIL}" "${LETS_ENCRYPT_DOMAIN}"
|
||||
if [[ -n "${PREVIOUS_ELK_VERSION}" && "$(get_env_parameter "ELK_VERSION")" != "${PREVIOUS_ELK_VERSION}" ]]; then
|
||||
docker ps -q -f name=${PACKAGE_SYSNAME}-elasticsearch | xargs -r docker stop
|
||||
MYSQL_TAG=$(docker images --format "{{.Tag}}" mysql | head -n1)
|
||||
MYSQL_CONTAINER_NAME=$(get_env_parameter "MYSQL_CONTAINER_NAME" | sed "s/\${CONTAINER_PREFIX}/${PACKAGE_SYSNAME}-/g")
|
||||
docker run --rm --network="$(get_env_parameter "NETWORK_NAME")" mysql:${MYSQL_TAG:-latest} mysql -h "${MYSQL_HOST:-${MYSQL_CONTAINER_NAME}}" -P "${MYSQL_PORT:-3306}" -u "${MYSQL_USER}" -p"${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" -e "TRUNCATE webstudio_index;"
|
||||
fi
|
||||
|
||||
if [ ! -z "${CERTIFICATE_PATH}" ] && [ ! -z "${CERTIFICATE_KEY_PATH}" ] && [[ ! -z "${APP_DOMAIN_PORTAL}" ]]; then
|
||||
bash $BASE_DIR/config/${PRODUCT}-ssl-setup -f "${APP_DOMAIN_PORTAL}" "${CERTIFICATE_PATH}" "${CERTIFICATE_KEY_PATH}"
|
||||
elif [ ! -z "${LETS_ENCRYPT_DOMAIN}" ] && [ ! -z "${LETS_ENCRYPT_MAIL}" ]; then
|
||||
bash $BASE_DIR/config/${PRODUCT}-ssl-setup "${LETS_ENCRYPT_MAIL}" "${LETS_ENCRYPT_DOMAIN}"
|
||||
fi
|
||||
elif [ "$INSTALL_PRODUCT" == "pull" ]; then
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml pull
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml pull
|
||||
docker-compose -f ${PROXY_YML} pull
|
||||
docker-compose -f $BASE_DIR/notify.yml pull
|
||||
docker-compose -f $BASE_DIR/healthchecks.yml pull
|
||||
fi
|
||||
}
|
||||
|
||||
@ -1365,19 +1485,19 @@ start_installation () {
|
||||
|
||||
download_files
|
||||
|
||||
install_elasticsearch
|
||||
|
||||
install_fluent_bit
|
||||
|
||||
install_mysql_server
|
||||
|
||||
install_document_server
|
||||
|
||||
install_rabbitmq
|
||||
|
||||
install_redis
|
||||
|
||||
install_elasticsearch
|
||||
install_document_server
|
||||
|
||||
if [ "$INSTALL_PRODUCT" == "true" ]; then
|
||||
install_product
|
||||
fi
|
||||
install_product
|
||||
|
||||
echo ""
|
||||
echo "Thank you for installing ${PACKAGE_SYSNAME^^} ${PRODUCT_NAME}."
|
||||
|
@ -14,6 +14,7 @@ RES_CHECK_PORTS="please, make sure that the ports are free.";
|
||||
RES_INSTALL_SUCCESS="Thank you for installing ONLYOFFICE ${product_name}.";
|
||||
RES_QUESTIONS="In case you have any questions contact us via http://support.onlyoffice.com or visit our forum at http://forum.onlyoffice.com"
|
||||
RES_MARIADB="To continue the installation, you need to remove MariaDB"
|
||||
INSTALL_FLUENT_BIT="true"
|
||||
|
||||
res_unsupported_version () {
|
||||
RES_CHOICE="Please, enter Y or N"
|
||||
@ -62,6 +63,27 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-ifb | --installfluentbit )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_FLUENT_BIT=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-du | --dashboadrsusername )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_USERNAME=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-dp | --dashboadrspassword )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_PASSWORD=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-ls | --localscripts )
|
||||
if [ "$2" != "" ]; then
|
||||
LOCAL_SCRIPTS=$2
|
||||
@ -98,6 +120,9 @@ while [ "$1" != "" ]; do
|
||||
echo " -je, --jwtenabled specifies the enabling the JWT validation (true|false)"
|
||||
echo " -jh, --jwtheader defines the http header that will be used to send the JWT"
|
||||
echo " -js, --jwtsecret defines the secret key to validate the JWT in the request"
|
||||
echo " -ifb, --installfluentbit install or update fluent-bit (true|false)"
|
||||
echo " -du, --dashboadrsusername login for authorization in /dashboards/"
|
||||
echo " -dp, --dashboadrspassword password for authorization in /dashboards/"
|
||||
echo " -ls, --local_scripts use 'true' to run local scripts (true|false)"
|
||||
echo " -skiphc, --skiphardwarecheck use to skip hardware check (true|false)"
|
||||
echo " -ms, --makeswap make swap file (true|false)"
|
||||
|
@ -33,16 +33,20 @@ if rpm -qa | grep mariadb.*config >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
#Add repositories: EPEL, REMI and RPMFUSION
|
||||
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-$REV.noarch.rpm || true
|
||||
rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-$REV.rpm || true
|
||||
yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$REV.noarch.rpm
|
||||
[ "$DIST" != "fedora" ] && { rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-$REV.noarch.rpm || true; }
|
||||
rpm -ivh https://rpms.remirepo.net/$REMI_DISTR_NAME/remi-release-$REV.rpm || true
|
||||
yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/$RPMFUSION_DISTR_NAME/rpmfusion-free-release-$REV.noarch.rpm
|
||||
|
||||
[ "$REV" = "9" ] && update-crypto-policies --set DEFAULT:SHA1
|
||||
[ "$DIST" != "redhat" ] && { [ "$REV" = "9" ] && TESTING_REPO="--enablerepo=crb" || POWERTOOLS_REPO="--enablerepo=powertools"; } || /usr/bin/crb enable
|
||||
if [ "$DIST" == "centos" ]; then
|
||||
[ "$REV" = "9" ] && TESTING_REPO="--enablerepo=crb" || POWERTOOLS_REPO="--enablerepo=powertools"
|
||||
elif [ "$DIST" == "redhat" ]; then
|
||||
/usr/bin/crb enable
|
||||
fi
|
||||
|
||||
#add rabbitmq & erlang repo
|
||||
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | os=centos dist=$REV bash
|
||||
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | os=centos dist=$REV bash
|
||||
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | bash
|
||||
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | bash
|
||||
|
||||
#add nodejs repo
|
||||
NODE_VERSION="18"
|
||||
@ -50,29 +54,25 @@ curl -fsSL https://rpm.nodesource.com/setup_${NODE_VERSION}.x | sed '/update -y/
|
||||
|
||||
#add mysql repo
|
||||
dnf remove -y @mysql && dnf module -y reset mysql && dnf module -y disable mysql
|
||||
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP "mysql80-community-release-el${REV}-\K.*" | grep -o '^[^.]*' | sort -n | tail -n1)"
|
||||
yum localinstall -y https://repo.mysql.com/mysql80-community-release-el${REV}-${MYSQL_REPO_VERSION}.noarch.rpm || true
|
||||
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP "mysql84-community-release-${MYSQL_DISTR_NAME}${REV}-\K.*" | grep -o '^[^.]*' | sort | tail -n1)"
|
||||
yum localinstall -y https://repo.mysql.com/mysql84-community-release-${MYSQL_DISTR_NAME}${REV}-${MYSQL_REPO_VERSION}.noarch.rpm || true
|
||||
|
||||
if ! rpm -q mysql-community-server; then
|
||||
MYSQL_FIRST_TIME_INSTALL="true";
|
||||
fi
|
||||
|
||||
#add elasticsearch repo
|
||||
ELASTIC_VERSION="7.16.3"
|
||||
ELASTIC_DIST=$(echo $ELASTIC_VERSION | awk '{ print int($1) }')
|
||||
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
|
||||
cat > /etc/yum.repos.d/elasticsearch.repo <<END
|
||||
[elasticsearch]
|
||||
name=Elasticsearch repository for ${ELASTIC_DIST}.x packages
|
||||
baseurl=https://artifacts.elastic.co/packages/${ELASTIC_DIST}.x/yum
|
||||
gpgcheck=1
|
||||
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
|
||||
enabled=0
|
||||
autorefresh=1
|
||||
type=rpm-md
|
||||
END
|
||||
#add opensearch repo
|
||||
curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo
|
||||
ELASTIC_VERSION="2.11.1"
|
||||
|
||||
# add nginx repo
|
||||
#add opensearch dashboards repo
|
||||
if [ ${INSTALL_FLUENT_BIT} == "true" ]; then
|
||||
curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/opensearch-dashboards-2.x.repo -o /etc/yum.repos.d/opensearch-dashboards-2.x.repo
|
||||
DASHBOARDS_VERSION="2.11.1"
|
||||
fi
|
||||
|
||||
# add nginx repo, Fedora doesn't need it
|
||||
if [ "$DIST" != "fedora" ]; then
|
||||
cat > /etc/yum.repos.d/nginx.repo <<END
|
||||
[nginx-stable]
|
||||
name=nginx stable repo
|
||||
@ -82,17 +82,19 @@ enabled=1
|
||||
gpgkey=https://nginx.org/keys/nginx_signing.key
|
||||
module_hotfixes=true
|
||||
END
|
||||
fi
|
||||
|
||||
rpm --import https://openresty.org/package/pubkey.gpg
|
||||
OPENRESTY_REPO_FILE=$( [[ "$REV" -ge 9 ]] && echo "openresty2.repo" || echo "openresty.repo" )
|
||||
curl -o /etc/yum.repos.d/openresty.repo "https://openresty.org/package/centos/${OPENRESTY_REPO_FILE}"
|
||||
OPENRESTY_REPO_FILE=$( [[ "$REV" -ge 9 && "$DIST" != "fedora" ]] && echo "openresty2.repo" || echo "openresty.repo" )
|
||||
curl -o /etc/yum.repos.d/openresty.repo "https://openresty.org/package/${OPENRESTY_DISTR_NAME}/${OPENRESTY_REPO_FILE}"
|
||||
[ "$DIST" == "fedora" ] && sed -i "s/\$releasever/$OPENRESTY_REV/g" /etc/yum.repos.d/openresty.repo
|
||||
|
||||
${package_manager} -y install epel-release \
|
||||
${package_manager} -y install $([ $DIST != "fedora" ] && echo "epel-release") \
|
||||
python3 \
|
||||
nodejs ${NODEJS_OPTION} \
|
||||
dotnet-sdk-8.0 \
|
||||
elasticsearch-${ELASTIC_VERSION} --enablerepo=elasticsearch \
|
||||
mysql-server \
|
||||
opensearch-${ELASTIC_VERSION} --enablerepo=opensearch-2.x \
|
||||
mysql-community-server \
|
||||
postgresql \
|
||||
postgresql-server \
|
||||
rabbitmq-server$rabbitmq_version \
|
||||
@ -101,6 +103,12 @@ ${package_manager} -y install epel-release \
|
||||
expect \
|
||||
ffmpeg $TESTING_REPO
|
||||
|
||||
#add repo, install fluent-bit
|
||||
if [ ${INSTALL_FLUENT_BIT} == "true" ]; then
|
||||
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | bash
|
||||
${package_manager} -y install opensearch-dashboards-${DASHBOARDS_VERSION} --enablerepo=opensearch-dashboards-2.x
|
||||
fi
|
||||
|
||||
if [[ $PSQLExitCode -eq $UPDATE_AVAILABLE_CODE ]]; then
|
||||
yum -y install postgresql-upgrade
|
||||
postgresql-setup --upgrade || true
|
||||
|
@ -5,17 +5,22 @@ set -e
|
||||
function make_swap () {
|
||||
local DISK_REQUIREMENTS=6144; #6Gb free space
|
||||
local MEMORY_REQUIREMENTS=12000; #RAM ~12Gb
|
||||
SWAPFILE="/${PRODUCT}_swapfile";
|
||||
SWAPFILE="/${product}_swapfile";
|
||||
|
||||
local AVAILABLE_DISK_SPACE=$(df -m / | tail -1 | awk '{ print $4 }');
|
||||
local TOTAL_MEMORY=$(free --mega | grep -oP '\d+' | head -n 1);
|
||||
local EXIST=$(swapon -s | awk '{ print $1 }' | { grep -x ${SWAPFILE} || true; });
|
||||
|
||||
if [[ -z $EXIST ]] && [ ${TOTAL_MEMORY} -lt ${MEMORY_REQUIREMENTS} ] && [ ${AVAILABLE_DISK_SPACE} -gt ${DISK_REQUIREMENTS} ]; then
|
||||
dd if=/dev/zero of=${SWAPFILE} count=6144 bs=1MiB
|
||||
chmod 600 ${SWAPFILE}
|
||||
mkswap ${SWAPFILE}
|
||||
swapon ${SWAPFILE}
|
||||
touch "$SWAPFILE"
|
||||
# No Copy-on-Write - no compression
|
||||
[[ "$DIST" == "fedora" ]] && chattr +C "$SWAPFILE"
|
||||
# Allocate 6 GB, much faster than: dd if=/dev/zero of=${SWAPFILE} count=6144 bs=1MiB
|
||||
fallocate -l 6G "$SWAPFILE"
|
||||
chmod 600 "$SWAPFILE"
|
||||
mkswap "$SWAPFILE"
|
||||
# Activate, enable upon system boot
|
||||
swapon "$SWAPFILE"
|
||||
echo "$SWAPFILE none swap sw 0 0" >> /etc/fstab
|
||||
fi
|
||||
}
|
||||
@ -66,15 +71,30 @@ read_unsupported_installation () {
|
||||
esac
|
||||
}
|
||||
|
||||
DIST=$(rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release)
|
||||
DIST=$(echo "${DIST}" | sed -n '/-.*/s///p')
|
||||
DIST_LOWER=$(echo "${DIST}" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
DIST=$(rpm -q --queryformat '%{NAME}' centos-release redhat-release fedora-release | awk -F'[- ]|package' '{print tolower($1)}' | tr -cd '[:alpha:]')
|
||||
[ -z $DIST ] && DIST=$(cat /etc/redhat-release | awk -F 'Linux|release| ' '{print tolower($1)}')
|
||||
REV=$(sed -n 's/.*release\ \([0-9]*\).*/\1/p' /etc/redhat-release)
|
||||
REV=${REV:-"7"}
|
||||
|
||||
# Check if it's Centos less than 8
|
||||
if [ "${REV}" -lt 8 ]; then
|
||||
REMI_DISTR_NAME="enterprise"
|
||||
RPMFUSION_DISTR_NAME="el"
|
||||
MYSQL_DISTR_NAME="el"
|
||||
OPENRESTY_DISTR_NAME="centos"
|
||||
SUPPORTED_FEDORA_FLAG="true"
|
||||
|
||||
if [ "$DIST" == "fedora" ]; then
|
||||
REMI_DISTR_NAME="fedora"
|
||||
OPENRESTY_DISTR_NAME="fedora"
|
||||
RPMFUSION_DISTR_NAME="fedora"
|
||||
MYSQL_DISTR_NAME="fc"
|
||||
OPENRESTY_REV=$([ "$REV" -ge 37 ] && echo 36 || echo "$REV")
|
||||
|
||||
FEDORA_SUPP=$(curl https://docs.fedoraproject.org/en-US/releases/ | awk '/Supported Releases/,/EOL Releases/' | grep -oP 'F\d+' | tr -d 'F')
|
||||
[ ! "$(echo "$FEDORA_SUPP" | grep "$REV")" ] && SUPPORTED_FEDORA_FLAG="false"
|
||||
fi
|
||||
|
||||
# Check if it's Centos less than 8 or Fedora release is out of service
|
||||
if [ "${REV}" -lt 8 ] || [ "$SUPPORTED_FEDORA_FLAG" == "false" ]; then
|
||||
echo "Your ${DIST} ${REV} operating system has reached the end of its service life."
|
||||
echo "Please consider upgrading your operating system or using a Docker installation."
|
||||
exit 1
|
||||
|
@ -26,6 +26,7 @@ APP_PORT="80"
|
||||
ELK_SHEME="http"
|
||||
ELK_HOST="localhost"
|
||||
ELK_PORT="9200"
|
||||
OPENSEARCH_INDEX="${PACKAGE_SYSNAME}-${PRODUCT}-logs"
|
||||
|
||||
RABBITMQ_HOST="localhost"
|
||||
RABBITMQ_USER="guest"
|
||||
@ -179,6 +180,20 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-du | --dashboadrsusername )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_USERNAME=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-dp | --dashboadrspassword )
|
||||
if [ "$2" != "" ]; then
|
||||
DASHBOARDS_PASSWORD=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-docsurl | --docsurl )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCUMENT_SERVER_URL_EXTERNAL=$2
|
||||
@ -234,9 +249,9 @@ set_core_machinekey () {
|
||||
fi
|
||||
|
||||
save_undefined_param "${USER_CONF}" "core.machinekey" "${CORE_MACHINEKEY}"
|
||||
save_undefined_param "${USER_CONF}" "core['base-domain']" "${APP_HOST}"
|
||||
save_undefined_param "${USER_CONF}" "core['base-domain']" "${APP_HOST}" "rewrite"
|
||||
save_undefined_param "${APP_DIR}/apisystem.${ENVIRONMENT}.json" "core.machinekey" "${CORE_MACHINEKEY}"
|
||||
save_undefined_param "${APP_DIR}/apisystem.${ENVIRONMENT}.json" "core['base-domain']" "${CORE_MACHINEKEY}"
|
||||
save_undefined_param "${APP_DIR}/apisystem.${ENVIRONMENT}.json" "core['base-domain']" "${APP_HOST}" "rewrite"
|
||||
|
||||
sed "s^\(machine_key\)\s*=.*^\1 = ${CORE_MACHINEKEY}^g" -i $APP_DIR/radicale.config
|
||||
}
|
||||
@ -280,7 +295,7 @@ restart_services() {
|
||||
|
||||
echo -n "Restarting services... "
|
||||
for SVC in login api socket studio-notify notify \
|
||||
people-server files files-services studio backup \
|
||||
people-server files files-services studio backup api-system \
|
||||
clear-events backup-background ssoauth doceditor healthchecks
|
||||
do
|
||||
systemctl enable ${PRODUCT}-$SVC >/dev/null 2>&1
|
||||
@ -331,7 +346,7 @@ establish_mysql_conn(){
|
||||
$MYSQL -e ";" >/dev/null 2>&1
|
||||
ERRCODE=$?
|
||||
if [ $ERRCODE -ne 0 ]; then
|
||||
systemctl ${MYSQL_PACKAGE} start >/dev/null 2>&1
|
||||
systemctl start ${MYSQL_PACKAGE} >/dev/null 2>&1
|
||||
$MYSQL -e ";" >/dev/null 2>&1 || { echo "FAILURE"; exit 1; }
|
||||
fi
|
||||
|
||||
@ -431,14 +446,9 @@ change_mysql_config(){
|
||||
else
|
||||
sed "s/collation_server.*/collation_server = utf8_general_ci/" -i ${CNF_PATH} || true # ignore errors
|
||||
fi
|
||||
|
||||
MYSQL_AUTHENTICATION_PLUGIN=$($MYSQL -e "SHOW VARIABLES LIKE 'default_authentication_plugin';" -s | awk '{print $2}' >/dev/null 2>&1)
|
||||
MYSQL_AUTHENTICATION_PLUGIN=${MYSQL_AUTHENTICATION_PLUGIN:-caching_sha2_password}
|
||||
|
||||
if ! grep -q "^default-authentication-plugin" ${CNF_PATH}; then
|
||||
sed "/\[mysqld\]/a default-authentication-plugin = ${MYSQL_AUTHENTICATION_PLUGIN}" -i ${CNF_PATH}
|
||||
else
|
||||
sed "s/default-authentication-plugin.*/default-authentication-plugin = ${MYSQL_AUTHENTICATION_PLUGIN}/" -i ${CNF_PATH} || true # ignore errors
|
||||
if grep -q "^default-authentication-plugin" ${CNF_PATH}; then
|
||||
sed "/^default-authentication-plugin/d" -i "${CNF_PATH}" || true # ignore errors
|
||||
fi
|
||||
|
||||
if [ -e ${CNF_SERVICE_PATH} ]; then
|
||||
@ -492,6 +502,14 @@ setup_openresty(){
|
||||
fi
|
||||
|
||||
if [ "$DIST" = "RedHat" ]; then
|
||||
# Remove default nginx settings [error] port 80 is already in use
|
||||
if [ -f /etc/nginx/nginx.conf ]; then
|
||||
if grep -q "server {" /etc/nginx/nginx.conf ; then
|
||||
sed -e '$a}' -e '/server {/,$d' -i /etc/nginx/nginx.conf
|
||||
systemctl reload nginx
|
||||
fi
|
||||
fi
|
||||
|
||||
shopt -s nocasematch
|
||||
PORTS=()
|
||||
if command -v getenforce &> /dev/null; then
|
||||
@ -601,15 +619,25 @@ setup_enterprise() {
|
||||
|
||||
change_elasticsearch_config(){
|
||||
|
||||
systemctl stop elasticsearch
|
||||
|
||||
local ELASTIC_SEARCH_CONF_PATH="/etc/elasticsearch/elasticsearch.yml"
|
||||
local ELASTIC_SEARCH_JAVA_CONF_PATH="/etc/elasticsearch/jvm.options";
|
||||
|
||||
if /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q "ingest-attachment"; then
|
||||
/usr/share/elasticsearch/bin/elasticsearch-plugin remove -s ingest-attachment
|
||||
systemctl stop opensearch
|
||||
if $PACKAGE_MANAGER elasticsearch >/dev/null 2>&1; then
|
||||
systemctl disable elasticsearch >/dev/null 2>&1
|
||||
systemctl stop elasticsearch >/dev/null 2>&1
|
||||
fi
|
||||
/usr/share/elasticsearch/bin/elasticsearch-plugin install -s -b ingest-attachment
|
||||
|
||||
sed -i '/^plugins\.security/d' /etc/opensearch/opensearch.yml
|
||||
sed -i '/CN=kirk,OU=client,O=client,L=test, C=de/d' /etc/opensearch/opensearch.yml
|
||||
if /usr/share/opensearch/bin/opensearch-plugin list | grep -x "opensearch-security" > /dev/null 2>&1 ; then
|
||||
/usr/share/opensearch/bin/opensearch-plugin remove opensearch-security > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
local ELASTIC_SEARCH_CONF_PATH="/etc/opensearch/opensearch.yml"
|
||||
local ELASTIC_SEARCH_JAVA_CONF_PATH="/etc/opensearch/jvm.options";
|
||||
|
||||
if /usr/share/opensearch/bin/opensearch-plugin list | grep -q "ingest-attachment"; then
|
||||
/usr/share/opensearch/bin/opensearch-plugin remove -s ingest-attachment
|
||||
fi
|
||||
/usr/share/opensearch/bin/opensearch-plugin install -s -b ingest-attachment
|
||||
|
||||
if [ -f ${ELASTIC_SEARCH_CONF_PATH}.rpmnew ]; then
|
||||
cp -rf ${ELASTIC_SEARCH_CONF_PATH}.rpmnew ${ELASTIC_SEARCH_CONF_PATH};
|
||||
@ -641,12 +669,6 @@ change_elasticsearch_config(){
|
||||
sed -i "s/Dlog4j2.formatMsgNoLookups.*/Dlog4j2.formatMsgNoLookups=true/" ${ELASTIC_SEARCH_JAVA_CONF_PATH}
|
||||
fi
|
||||
|
||||
if ! grep -q "ingest.geoip.downloader.enabled" ${ELASTIC_SEARCH_CONF_PATH}; then
|
||||
echo "ingest.geoip.downloader.enabled: false" >> ${ELASTIC_SEARCH_CONF_PATH}
|
||||
else
|
||||
sed -i "s/ingest.geoip.downloader.enabled.*/ingest.geoip.downloader.enabled: false/" ${ELASTIC_SEARCH_CONF_PATH}
|
||||
fi
|
||||
|
||||
local TOTAL_MEMORY=$(free --mega | grep -oP '\d+' | head -n 1);
|
||||
local MEMORY_REQUIREMENTS=12000; #RAM ~12Gb
|
||||
|
||||
@ -668,13 +690,13 @@ change_elasticsearch_config(){
|
||||
echo "-Xmx${ELASTICSEATCH_MEMORY}" >> "${ELASTIC_SEARCH_JAVA_CONF_PATH}"
|
||||
fi
|
||||
|
||||
if [ -d /etc/elasticsearch/ ]; then
|
||||
chmod g+ws /etc/elasticsearch/
|
||||
if [ -d /etc/opensearch/ ]; then
|
||||
chmod g+ws /etc/opensearch/
|
||||
fi
|
||||
}
|
||||
|
||||
setup_elasticsearch() {
|
||||
echo -n "Configuring elasticsearch... "
|
||||
echo -n "Configuring opensearch... "
|
||||
|
||||
#Save elasticsearch parameters in .json
|
||||
[[ $1 == "EXTERNAL_ELASTIC_SERVER" ]] && local EXTERNAL_ELASTIC_FLAG="rewrite"
|
||||
@ -686,12 +708,58 @@ setup_elasticsearch() {
|
||||
if [ $1 == "LOCAL_ELASTIC_SERVER" ]; then
|
||||
change_elasticsearch_config
|
||||
|
||||
systemctl enable elasticsearch >/dev/null 2>&1
|
||||
systemctl restart elasticsearch
|
||||
systemctl enable opensearch >/dev/null 2>&1
|
||||
systemctl restart opensearch
|
||||
fi
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
setup_dashboards() {
|
||||
echo -n "Configuring dashboards... "
|
||||
|
||||
DASHBOARDS_CONF_PATH="/etc/opensearch-dashboards/opensearch_dashboards.yml"
|
||||
|
||||
if [[ -n ${DASHBOARDS_PASSWORD} ]]; then
|
||||
echo "${DASHBOARDS_PASSWORD}" > ${APP_DIR}/.private/dashboards-password
|
||||
elif [[ -f ${APP_DIR}/.private/dashboards-password ]]; then
|
||||
DASHBOARDS_PASSWORD=$(cat ${APP_DIR}/.private/dashboards-password);
|
||||
else
|
||||
DASHBOARDS_PASSWORD=$(echo "$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 20)" | tee ${APP_DIR}/.private/dashboards-password)
|
||||
fi
|
||||
|
||||
chmod o-rwx $APP_DIR/.private/dashboards-password
|
||||
|
||||
# configure login&pass for Dashboards, used by Nginx HTTP Basic Authentication
|
||||
echo "${DASHBOARDS_USERNAME:-"onlyoffice"}:$(openssl passwd -6 -stdin <<< "${DASHBOARDS_PASSWORD}")" > /etc/openresty/.htpasswd_dashboards
|
||||
chown nginx:nginx /etc/openresty/.htpasswd_dashboards
|
||||
|
||||
# enable connection with opensearch
|
||||
sed -i 's~\(opensearch\.hosts:\).*~\1 \[http://localhost:9200\]~' ${DASHBOARDS_CONF_PATH}
|
||||
sed -i '/^opensearch\_security/d' ${DASHBOARDS_CONF_PATH}
|
||||
if /usr/share/opensearch-dashboards/bin/opensearch-dashboards-plugin list --allow-root | grep "securityDashboards*" > /dev/null 2>&1 ; then
|
||||
/usr/share/opensearch-dashboards/bin/opensearch-dashboards-plugin remove securityDashboards --allow-root > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
# set basePath variable to get access to Dashboards from a remote host
|
||||
sed 's_.*\(server.basePath:\).*_\1 "/dashboards"_' -i ${DASHBOARDS_CONF_PATH}
|
||||
|
||||
systemctl enable opensearch-dashboards
|
||||
systemctl restart opensearch-dashboards
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
setup_fluentbit() {
|
||||
echo -n "Configuring fluent-bit... "
|
||||
|
||||
# Replace variables in fluent-bit config file template, force copy to conf directory
|
||||
sed -i "s/OPENSEARCH_HOST/$ELK_HOST/g; s/OPENSEARCH_PORT/$ELK_PORT/g; s/OPENSEARCH_INDEX/$OPENSEARCH_INDEX/g; s/OPENSEARCH_SCHEME/$ELK_SHEME/g" ${APP_DIR}/fluent-bit.conf
|
||||
cp -f ${APP_DIR}/fluent-bit.conf /etc/fluent-bit/fluent-bit.conf
|
||||
|
||||
systemctl enable fluent-bit
|
||||
systemctl restart fluent-bit
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
setup_redis() {
|
||||
echo -n "Configuring redis... "
|
||||
|
||||
@ -804,10 +872,18 @@ fi
|
||||
if [[ ! -z $EXTERNAL_ELK_FLAG ]]; then
|
||||
check_connection_external_services "$ELK_HOST" "$ELK_PORT" "Elasticsearch"
|
||||
setup_elasticsearch "EXTERNAL_ELASTIC_SERVER"
|
||||
elif $PACKAGE_MANAGER elasticsearch >/dev/null 2>&1; then
|
||||
elif $PACKAGE_MANAGER opensearch >/dev/null 2>&1; then
|
||||
setup_elasticsearch "LOCAL_ELASTIC_SERVER"
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER opensearch-dashboards >/dev/null 2>&1; then
|
||||
setup_dashboards
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER fluent-bit >/dev/null 2>&1; then
|
||||
setup_fluentbit
|
||||
fi
|
||||
|
||||
if [[ ! -z $EXTERNAL_REDIS_FLAG ]]; then
|
||||
check_connection_external_services "$REDIS_HOST" "$REDIS_PORT" "Redis"
|
||||
setup_redis "EXTERNAL_REDIS_SERVER"
|
||||
@ -823,3 +899,11 @@ elif $PACKAGE_MANAGER rabbitmq-server >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
restart_services
|
||||
|
||||
# Truncate MySQL DB to make opensearch work with updated app. Strictly after restart_services ()
|
||||
if $PACKAGE_MANAGER opensearch >/dev/null 2>&1; then
|
||||
ELASTIC_VERSION=$(awk '/build:/{f=1} f&&/version:/{gsub(/"/,"",$2);print $2; exit}' /usr/share/opensearch/manifest.yml 2>/dev/null || echo "2.11.1")
|
||||
[[ ! -f "$APP_DIR/.private/opensearch-version" || $(cat "$APP_DIR/.private/opensearch-version") != *"$ELASTIC_VERSION"* ]] && $MYSQL "$DB_NAME" -e "TRUNCATE webstudio_index";
|
||||
echo "$ELASTIC_VERSION" > $APP_DIR/.private/opensearch-version
|
||||
chmod o-rwx $APP_DIR/.private/opensearch-version
|
||||
fi
|
||||
|
@ -8,6 +8,7 @@ LETSENCRYPT="/etc/letsencrypt/live";
|
||||
OPENRESTY="/etc/openresty/conf.d"
|
||||
DHPARAM_FILE="/etc/ssl/certs/dhparam.pem"
|
||||
WEBROOT_PATH="/var/www/${PRODUCT}"
|
||||
SYSTEMD_DIR="/usr/lib/systemd/system"
|
||||
|
||||
# Check if configuration files are present
|
||||
if [ ! -f "${OPENRESTY}/onlyoffice-proxy-ssl.conf.template" -a ! -f "${OPENRESTY}/onlyoffice-proxy.conf.template" ]; then
|
||||
@ -23,10 +24,12 @@ help(){
|
||||
echo " Use comma to register multiple emails, ex:"
|
||||
echo " u1@example.com,u2@example.com."
|
||||
echo " DOMAIN Domain name to apply"
|
||||
echo " Use comma to register multiple domains, ex:"
|
||||
echo " example.com,s1.example.com,s2.example.com."
|
||||
echo ""
|
||||
echo "Using your own certificates via the -f or --file parameter:"
|
||||
echo " docspace-ssl-setup --file DOMAIN CERTIFICATE PRIVATEKEY"
|
||||
echo " DOMAIN Domain name to apply."
|
||||
echo " DOMAIN Main domain name to apply."
|
||||
echo " CERTIFICATE Path to the certificate file for the domain."
|
||||
echo " PRIVATEKEY Path to the private key file for the certificate."
|
||||
echo ""
|
||||
@ -56,6 +59,14 @@ case $1 in
|
||||
sed "s!\(worker_connections\).*;!\1 $(ulimit -n);!" -i "${OPENRESTY}/onlyoffice-proxy.conf"
|
||||
[[ -f "${DIR}/${PRODUCT}-renew-letsencrypt" ]] && rm -rf "${DIR}/${PRODUCT}-renew-letsencrypt"
|
||||
[ $(pgrep -x ""systemd"" | wc -l) -gt 0 ] && systemctl reload openresty || service openresty reload
|
||||
|
||||
SYSTEMD_NODE_FILES=$(grep -l "NODE_EXTRA_CA_CERTS" ${SYSTEMD_DIR}/${PRODUCT}-*.service ${SYSTEMD_DIR}/ds-*.service || true)
|
||||
if [ -n "$SYSTEMD_NODE_FILES" ]; then
|
||||
sed -i '/NODE_EXTRA_CA_CERTS/d' ${SYSTEMD_NODE_FILES}
|
||||
systemctl daemon-reload
|
||||
echo "${SYSTEMD_NODE_FILES[@]}" | xargs -I % basename % | xargs systemctl restart
|
||||
fi
|
||||
|
||||
echo "OK"
|
||||
exit 0
|
||||
;;
|
||||
@ -63,7 +74,8 @@ case $1 in
|
||||
* )
|
||||
if [ "$#" -ge "2" ]; then
|
||||
MAIL=$1
|
||||
DOMAIN=$2
|
||||
DOMAINS=$2
|
||||
DOMAIN=$(cut -d ',' -f 1 <<< "$DOMAINS")
|
||||
LETSENCRYPT_ENABLE="true"
|
||||
|
||||
# Install certbot if not already installed
|
||||
@ -79,8 +91,8 @@ case $1 in
|
||||
echo "Generating Let's Encrypt SSL Certificates..."
|
||||
|
||||
# Request and generate Let's Encrypt SSL certificate
|
||||
echo certbot certonly --expand --webroot -w ${WEBROOT_PATH} --cert-name ${PRODUCT} --noninteractive --agree-tos --email ${MAIL} -d ${DOMAIN} > /var/log/le-start.log
|
||||
certbot certonly --expand --webroot -w ${WEBROOT_PATH} --cert-name ${PRODUCT} --noninteractive --agree-tos --email ${MAIL} -d ${DOMAIN} > /var/log/le-new.log
|
||||
echo certbot certonly --expand --webroot -w ${WEBROOT_PATH} --cert-name ${PRODUCT} --noninteractive --agree-tos --email ${MAIL} -d ${DOMAINS[@]} > /var/log/le-start.log
|
||||
certbot certonly --expand --webroot -w ${WEBROOT_PATH} --cert-name ${PRODUCT} --noninteractive --agree-tos --email ${MAIL} -d ${DOMAINS[@]} > /var/log/le-new.log
|
||||
else
|
||||
help
|
||||
fi
|
||||
@ -118,6 +130,21 @@ if [ -f "${CERTIFICATE_FILE}" ]; then
|
||||
if [ -d /etc/cron.d ]; then
|
||||
echo -e "@weekly root ${DIR}/${PRODUCT}-renew-letsencrypt" | tee /etc/cron.d/${PRODUCT}-letsencrypt
|
||||
fi
|
||||
else
|
||||
CERTIFICATE_SUBJECT=$(openssl x509 -subject -noout -in "${CERTIFICATE_FILE}" | sed 's/subject=//')
|
||||
CERTIFICATE_ISSUER=$(openssl x509 -issuer -noout -in "${CERTIFICATE_FILE}" | sed 's/issuer=//')
|
||||
|
||||
#Checking whether the certificate is self-signed
|
||||
if [[ -n "$CERTIFICATE_SUBJECT" && -n "$CERTIFICATE_ISSUER" && "$CERTIFICATE_SUBJECT" == "$CERTIFICATE_ISSUER" ]]; then
|
||||
SYSTEMD_NODE_FILES=$(grep -l "ExecStart=/usr/bin/node" ${SYSTEMD_DIR}/${PRODUCT}-*.service; ls ${SYSTEMD_DIR}/ds-*.service 2>/dev/null | grep -v "ds-example" || true)
|
||||
for SYSTEMD_NODE_FILE in ${SYSTEMD_NODE_FILES}; do
|
||||
if ! grep -q "NODE_EXTRA_CA_CERTS" "${SYSTEMD_NODE_FILE}"; then
|
||||
sed -i "/ExecStart=/i Environment=NODE_EXTRA_CA_CERTS=${CERTIFICATE_FILE}" "${SYSTEMD_NODE_FILE}"
|
||||
fi
|
||||
done
|
||||
systemctl daemon-reload
|
||||
echo "${SYSTEMD_NODE_FILES[@]}" | xargs -I % basename % | xargs systemctl restart
|
||||
fi
|
||||
fi
|
||||
|
||||
[ $(pgrep -x ""systemd"" | wc -l) -gt 0 ] && systemctl reload openresty || service openresty reload
|
||||
|
@ -120,7 +120,7 @@ reassign_values (){
|
||||
WORK_DIR="${BASE_DIR}/products/ASC.Files/service/"
|
||||
EXEC_FILE="ASC.Files.Service.dll"
|
||||
CORE_EVENT_BUS=" --core:eventBus:subscriptionClientName=asc_event_bus_files_service_queue"
|
||||
DEPENDENCY_LIST="${DEPENDENCY_LIST} elasticsearch.service"
|
||||
DEPENDENCY_LIST="${DEPENDENCY_LIST} opensearch.service"
|
||||
;;
|
||||
studio )
|
||||
SERVICE_PORT="5003"
|
||||
|
@ -56,7 +56,7 @@ Package: {{product}}-files
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-8.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: elasticsearch (= 7.16.3)
|
||||
Recommends: opensearch (= 2.11.1)
|
||||
Description: {{product}}-files
|
||||
The service which handles API requests related to
|
||||
documents and launches the OFormService service
|
||||
@ -65,7 +65,7 @@ Package: {{product}}-files-services
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-8.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: ffmpeg, elasticsearch (= 7.16.3)
|
||||
Recommends: ffmpeg, opensearch (= 2.11.1)
|
||||
Description: {{product}}-files-services
|
||||
The service which launches additional services related to file management:
|
||||
- ElasticSearchIndexService - indexes documents using elasticsearch;
|
||||
@ -79,7 +79,7 @@ Package: {{product}}-notify
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-8.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: ffmpeg, elasticsearch (= 7.16.3)
|
||||
Recommends: ffmpeg, opensearch (= 2.11.1)
|
||||
Description: {{product}}-notify
|
||||
The service which launches additional services
|
||||
related to notifications about DocSpace events:
|
||||
|
@ -2,3 +2,4 @@ debian/build/buildtools/config/*.json etc/onlyo
|
||||
debian/build/buildtools/config/*.config etc/onlyoffice/{{product}}
|
||||
debian/build/buildtools/install/common/{{product}}-configuration usr/bin
|
||||
debian/build/buildtools/install/common/logrotate/{{product}}-common etc/logrotate.d
|
||||
debian/build/buildtools/install/docker/config/fluent-bit.conf etc/onlyoffice/{{product}}
|
||||
|
@ -1,9 +1,12 @@
|
||||
## COPY PUBLIC ##
|
||||
debian/build/buildtools/install/common/{{product}}-ssl-setup usr/bin
|
||||
debian/build/buildtools/install/docker/config/nginx/templates/*.template etc/onlyoffice/{{product}}/openresty
|
||||
debian/build/buildtools/config/nginx/html/*.html etc/openresty/html
|
||||
debian/build/buildtools/install/docker/config/nginx/onlyoffice* etc/openresty/conf.d
|
||||
debian/build/buildtools/config/nginx/onlyoffice*.conf etc/openresty/conf.d
|
||||
debian/build/buildtools/install/docker/config/nginx/letsencrypt* etc/openresty/includes
|
||||
debian/build/buildtools/config/nginx/includes/onlyoffice*.conf etc/openresty/includes
|
||||
debian/build/publish/web/public/* var/www/{{product}}/public
|
||||
debian/build/campaigns/src/campaigns/* var/www/{{product}}/public/campaigns
|
||||
debian/build/publish/web/client/* var/www/{{product}}/client
|
||||
debian/build/publish/web/management/* var/www/{{product}}/management
|
||||
|
@ -46,6 +46,7 @@ check_archives:
|
||||
@$(call extract_archive,${SOURCE_PATH}/client.tar.gz,client,-C ${BUILD_PATH})
|
||||
@$(call extract_archive,${SOURCE_PATH}/dictionaries.tar.gz,dictionaries,-C ${CLENT_PATH}/common/Tests/Frontend.Translations.Tests)
|
||||
@$(call extract_archive,${SOURCE_PATH}/DocStore.tar.gz,DocStore,-C ${SERVER_PATH}/products/ASC.Files/Server)
|
||||
@$(call extract_archive,${SOURCE_PATH}/campaigns.tar.gz,campaigns,-C ${BUILD_PATH})
|
||||
@echo "Source archives check passed."
|
||||
|
||||
override_dh_auto_build: check_archives
|
||||
@ -75,13 +76,16 @@ override_dh_auto_build: check_archives
|
||||
|
||||
sed -e 's_etc/nginx_etc/openresty_g' -e 's/listen\s\+\([0-9]\+\);/listen 127.0.0.1:\1;/g' -i ${BUILDTOOLS_PATH}/config/nginx/*.conf
|
||||
sed -i "s#\$$public_root#/var/www/${PRODUCT}/public/#g" ${BUILDTOOLS_PATH}/config/nginx/onlyoffice.conf
|
||||
sed -E 's_(http://)[^:]+(:5601)_\1localhost\2_g' -i ${BUILDTOOLS_PATH}/config/nginx/onlyoffice.conf
|
||||
sed 's/teamlab.info/onlyoffice.com/g' -i ${BUILDTOOLS_PATH}/config/autofac.consumers.json
|
||||
json -I -f ${CLENT_PATH}/public/scripts/config.json -e "this.wrongPortalNameUrl=\"\""
|
||||
sed -e 's/$$router_host/127.0.0.1/g' -e 's/the_host/host/g' -e 's/the_scheme/scheme/g' -e 's_includes_/etc/openresty/includes_g' -i ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy*.conf
|
||||
sed -e 's/$$router_host/127.0.0.1/g' -e 's/this_host\|proxy_x_forwarded_host/host/g' -e 's/proxy_x_forwarded_proto/scheme/g' -e 's/proxy_x_forwarded_port/server_port/g' -e 's_includes_/etc/openresty/includes_g' -i ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy*.conf
|
||||
sed "s_\(.*root\).*;_\1 \"/var/www/${PRODUCT}\";_g" -i ${BUILDTOOLS_PATH}/install/docker/config/nginx/letsencrypt.conf
|
||||
sed -e '/.pid/d' -e '/temp_path/d' -e 's_etc/nginx_etc/openresty_g' -e 's/\.log/-openresty.log/g' -i ${BUILDTOOLS_PATH}/install/docker/config/nginx/templates/nginx.conf.template
|
||||
mv -f ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy-ssl.conf ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy-ssl.conf.template
|
||||
cp -rf ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy.conf ${BUILDTOOLS_PATH}/install/docker/config/nginx/onlyoffice-proxy.conf.template
|
||||
sed -i '/^\s*Name\s\+forward\s*/d; /^\s*Listen\s\+127\.0\.0\.1\s*/d; /^\s*Port\s\+24224\s*/d' ${BUILDTOOLS_PATH}/install/docker/config/fluent-bit.conf
|
||||
sed -i '0,/\[INPUT\]/ s/\(\[INPUT\]\)/\1\n Name tail\n Path \/var\/log\/onlyoffice\/${PRODUCT}\/*.log\n Path_Key filename/' ${BUILDTOOLS_PATH}/install/docker/config/fluent-bit.conf
|
||||
|
||||
for i in ${PRODUCT} $$(ls ${CURDIR}/debian/*.install | grep -oP 'debian/\K.*' | grep -o '^[^.]*'); do \
|
||||
cp ${CURDIR}/debian/source/lintian-overrides ${CURDIR}/debian/$$i.lintian-overrides; \
|
||||
|
@ -1,13 +1,15 @@
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
embedded-javascript-library var/www/{{product}}/services/*/node_modules/*
|
||||
embedded-javascript-library var/www/{{product}}/*/node_modules/*
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
executable-not-elf-or-script var/www/{{product}}/services/*/node_modules/*
|
||||
executable-not-elf-or-script var/www/{{product}}/*/node_modules/*
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
privacy-breach-generic var/www/{{product}}/services/*/node_modules/*
|
||||
privacy-breach-generic var/www/{{product}}/*/node_modules/*
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
script-not-executable var/www/{{product}}/services/*/node_modules/*
|
||||
script-not-executable var/www/{{product}}/*/node_modules/*
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
unusual-interpreter */node_modules/*
|
||||
# Ignoring node_modules errors due to lack of ability to influence them
|
||||
statically-linked-binary var/www/{{product}}/*/node_modules/*
|
||||
|
||||
# The use of the /var/www directory is caused by its past history as the default document root
|
||||
dir-or-file-in-var-www
|
||||
|
@ -6,35 +6,24 @@
|
||||
DOCKER_IMAGE_PREFIX=${STATUS}docspace
|
||||
DOCKER_TAG=latest
|
||||
CONTAINER_PREFIX=${PRODUCT}-
|
||||
MYSQL_VERSION=8.0.32
|
||||
MYSQL_VERSION=8.3.0
|
||||
MYSQL_IMAGE=mysql:${MYSQL_VERSION}
|
||||
ELK_VERSION=7.16.3
|
||||
SERVICE_PORT=5050
|
||||
DOCUMENT_SERVER_IMAGE_NAME=onlyoffice/4testing-documentserver-ee:latest
|
||||
DOCKERFILE=Dockerfile.app
|
||||
APP_DOTNET_ENV=""
|
||||
EXTERNAL_PORT="80"
|
||||
|
||||
# zookeeper #
|
||||
ZOO_PORT=2181
|
||||
ZOO_HOST=${CONTAINER_PREFIX}zookeeper
|
||||
ZOO_SERVER=server.1=${ZOO_HOST}:2888:3888
|
||||
|
||||
# kafka #
|
||||
KAFKA_HOST=${CONTAINER_PREFIX}kafka
|
||||
KAFKA_ADVERTISED_LISTENERS=LISTENER_DOCKER_INTERNAL://${KAFKA_HOST}:9092
|
||||
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
|
||||
KAFKA_INTER_BROKER_LISTENER_NAME=LISTENER_DOCKER_INTERNAL
|
||||
KAFKA_ZOOKEEPER_CONNECT=${ZOO_HOST}:2181
|
||||
KAFKA_BROKER_ID=1
|
||||
KAFKA_LOG4J_LOGGERS=kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO
|
||||
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
|
||||
|
||||
# elasticsearch #
|
||||
ELK_CONTAINER_NAME=${CONTAINER_PREFIX}elasticsearch
|
||||
# opensearch stack #
|
||||
ELK_VERSION=2.11.1
|
||||
ELK_CONTAINER_NAME=${CONTAINER_PREFIX}opensearch
|
||||
ELK_SHEME=http
|
||||
ELK_HOST=""
|
||||
ELK_PORT=9200
|
||||
DASHBOARDS_VERSION=2.11.1
|
||||
DASHBOARDS_CONTAINER_NAME=${CONTAINER_PREFIX}opensearch-dashboards
|
||||
DASHBOARDS_USERNAME=onlyoffice
|
||||
DASHBOARDS_PASSWORD=onlyoffice
|
||||
|
||||
# app service environment #
|
||||
ENV_EXTENSION=none
|
||||
@ -86,20 +75,6 @@
|
||||
DATABASE_MIGRATION=false
|
||||
MIGRATION_TYPE="SAAS"
|
||||
|
||||
# oauth2 #
|
||||
OAUTH_AUTHORIZATION_DOCKERFILE=/Dockerfile
|
||||
OAUTH_API_DOCKERFILE=/Dockerfile
|
||||
|
||||
JDBC_USER_NAME=root
|
||||
JDBC_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
|
||||
PROFILE="dev"
|
||||
|
||||
OAUTH_AUTHORIZATION_CONTAINER_NAME=${CONTAINER_PREFIX}oauth-authorization
|
||||
OAUTH_API_CONTAINER_NAME=${CONTAINER_PREFIX}oauth-api
|
||||
|
||||
REDIS_ADDRESSES=redis://onlyoffice-redis:6379
|
||||
|
||||
# service host #
|
||||
API_SYSTEM_HOST=${CONTAINER_PREFIX}api-system
|
||||
BACKUP_HOST=${CONTAINER_PREFIX}backup
|
||||
@ -121,9 +96,8 @@
|
||||
ROUTER_HOST=${CONTAINER_PREFIX}router
|
||||
DOCEDITOR_HOST=${CONTAINER_PREFIX}doceditor
|
||||
LOGIN_HOST=${CONTAINER_PREFIX}login
|
||||
MANAGEMENT_HOST={CONTAINER_PREFIX}management
|
||||
HELTHCHECKS_HOST=${CONTAINER_PREFIX}healthchecks
|
||||
OAUTH_HOST=${CONTAINER_PREFIX}oauth-authorization
|
||||
OAUTH_API_HOST=${CONTAINER_PREFIX}oauth-api
|
||||
|
||||
# router upstream environment #
|
||||
SERVICE_API_SYSTEM=${API_SYSTEM_HOST}:${SERVICE_PORT}
|
||||
@ -141,12 +115,26 @@
|
||||
SERVICE_STUDIO=${STUDIO_HOST}:${SERVICE_PORT}
|
||||
SERVICE_SSOAUTH=${SSOAUTH_HOST}:${SERVICE_PORT}
|
||||
SERVICE_TELEGRAMREPORTS=${TELEGRAMREPORTS_HOST}:${SERVICE_PORT}
|
||||
SERVICE_OAUTH=${OAUTH_HOST}:${SERVICE_PORT}
|
||||
SERVICE_OAUTH_API=${OAUTH_API_HOST}:${SERVICE_PORT}
|
||||
SERVICE_DOCEDITOR=${DOCEDITOR_HOST}:5013
|
||||
SERVICE_LOGIN=${LOGIN_HOST}:5011
|
||||
SERVICE_MANAGEMENT={MANAGEMENT_HOST}:${SERVICE_PORT}
|
||||
SERVICE_HELTHCHECKS=${HELTHCHECKS_HOST}:${SERVICE_PORT}
|
||||
|
||||
NETWORK_NAME=${PRODUCT}
|
||||
|
||||
COMPOSE_IGNORE_ORPHANS=True
|
||||
|
||||
|
||||
# oauth2 #
|
||||
OAUTH_AUTHORIZATION_DOCKERFILE=/Dockerfile
|
||||
OAUTH_API_DOCKERFILE=/Dockerfile
|
||||
|
||||
JDBC_USER_NAME=root
|
||||
JDBC_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
|
||||
PROFILE="dev"
|
||||
|
||||
OAUTH_AUTHORIZATION_CONTAINER_NAME=${CONTAINER_PREFIX}oauth-authorization
|
||||
OAUTH_API_CONTAINER_NAME=${CONTAINER_PREFIX}oauth-api
|
||||
|
||||
REDIS_ADDRESSES=redis://onlyoffice-redis:6379
|
@ -39,10 +39,11 @@ RUN apt-get -y update && \
|
||||
apt-get install -y nodejs && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ADD https://api.github.com/repos/ONLYOFFICE/DocSpace/git/refs/heads/${GIT_BRANCH} version.json
|
||||
ADD https://api.github.com/repos/ONLYOFFICE/DocSpace-buildtools/git/refs/heads/${GIT_BRANCH} version.json
|
||||
RUN git clone -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace-buildtools.git ${SRC_PATH}/buildtools && \
|
||||
git clone --recurse-submodules -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace-Server.git ${SRC_PATH}/server && \
|
||||
git clone -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace-Client.git ${SRC_PATH}/client
|
||||
git clone -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace-Client.git ${SRC_PATH}/client && \
|
||||
git clone -b "master" --depth 1 https://github.com/ONLYOFFICE/ASC.Web.Campaigns.git ${SRC_PATH}/campaigns
|
||||
|
||||
RUN cd ${SRC_PATH} && \
|
||||
mkdir -p /app/onlyoffice/config/ && \
|
||||
@ -148,9 +149,12 @@ COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d
|
||||
COPY --from=base /etc/nginx/includes /etc/nginx/includes
|
||||
COPY --from=base ${SRC_PATH}/publish/web/client ${BUILD_PATH}/client
|
||||
COPY --from=base ${SRC_PATH}/publish/web/public ${BUILD_PATH}/public
|
||||
COPY --from=base ${SRC_PATH}/campaigns/src/campaigns ${BUILD_PATH}/public/campaigns
|
||||
COPY --from=base ${SRC_PATH}/publish/web/management ${BUILD_PATH}/management
|
||||
COPY --from=base ${SRC_PATH}/buildtools/install/docker/config/nginx/docker-entrypoint.d /docker-entrypoint.d
|
||||
COPY --from=base ${SRC_PATH}/buildtools/install/docker/config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template
|
||||
COPY --from=base ${SRC_PATH}/buildtools/install/docker/config/nginx/templates/nginx.conf.template /etc/nginx/nginx.conf.template
|
||||
COPY --from=base ${SRC_PATH}/buildtools/config/nginx/html /etc/nginx/html
|
||||
COPY --from=base ${SRC_PATH}/buildtools/install/docker/prepare-nginx-router.sh /docker-entrypoint.d/prepare-nginx-router.sh
|
||||
COPY --from=base ${SRC_PATH}/buildtools/install/docker/config/nginx/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
@ -168,7 +172,10 @@ RUN sed -i 's/127.0.0.1:5010/$service_api_system/' /etc/nginx/conf.d/onlyoffice.
|
||||
sed -i 's/127.0.0.1:5011/$service_login/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i 's/127.0.0.1:9090/$service_oauth_api/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i 's/127.0.0.1:8080/$service_oauth/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
if [[ -z "${SERVICE_CLIENT}" ]] ; then sed -i 's/127.0.0.1:5001/$service_client/' /etc/nginx/conf.d/onlyoffice.conf; fi && \
|
||||
if [[ -z "${SERVICE_MANAGEMENT}" ]] ; then sed -i 's/127.0.0.1:5015/$service_management/' /etc/nginx/conf.d/onlyoffice.conf; fi && \
|
||||
sed -i 's/127.0.0.1:5033/$service_healthchecks/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i 's/127.0.0.1:5601/$dashboards_host:5601/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i 's/$public_root/\/var\/www\/public\//' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i 's/http:\/\/172.*/$document_server;/' /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
sed -i '/client_body_temp_path/ i \ \ \ \ $MAP_HASH_BUCKET_SIZE' /etc/nginx/nginx.conf.template && \
|
||||
@ -247,6 +254,13 @@ FROM dotnetrun AS files_services
|
||||
ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
|
||||
WORKDIR ${BUILD_PATH}/products/ASC.Files/service/
|
||||
|
||||
RUN echo "deb http://security.ubuntu.com/ubuntu focal-security main" | tee /etc/apt/sources.list && \
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 && \
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C && \
|
||||
apt-get -y update && \
|
||||
apt-get install -yq libssl1.1 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
|
||||
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Files.Service/service/ .
|
||||
COPY --from=onlyoffice/ffvideo:6.0 --chown=onlyoffice:onlyoffice /usr/local /usr/local/
|
||||
|
@ -15,6 +15,7 @@ RUN find config/ -maxdepth 1 -name "*.json" | grep -v test | grep -v dev | xargs
|
||||
tar -C "/app/onlyoffice/" -xvf config.tar && \
|
||||
cp config/*.config /app/onlyoffice/config/ && \
|
||||
mkdir -p /etc/nginx/conf.d && cp -f config/nginx/onlyoffice*.conf /etc/nginx/conf.d/ && \
|
||||
mkdir -p /etc/nginx/html && cp -f config/nginx/html/* /etc/nginx/html/ && \
|
||||
mkdir -p /etc/nginx/includes/ && cp -f config/nginx/includes/onlyoffice*.conf /etc/nginx/includes/ && \
|
||||
sed -i "s/\"number\".*,/\"number\": \"${PRODUCT_VERSION}.${BUILD_NUMBER}\",/g" /app/onlyoffice/config/appsettings.json && \
|
||||
sed -e 's/#//' -i /etc/nginx/conf.d/onlyoffice.conf
|
||||
@ -92,6 +93,7 @@ RUN apt-get -y update && \
|
||||
|
||||
# copy static services files and config values
|
||||
COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d
|
||||
COPY --from=base /etc/nginx/html /etc/nginx/html
|
||||
|
||||
COPY /buildtools/install/docker/config/nginx/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
COPY /buildtools/install/docker/config/nginx/docker-entrypoint.d /docker-entrypoint.d
|
||||
|
@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
onlyoffice-backup-background-tasks:
|
||||
build:
|
||||
|
@ -14,7 +14,7 @@ else
|
||||
echo "Error: yml files not found." && exit 1
|
||||
fi
|
||||
|
||||
FILES=("${PRODUCT}" "notify" "healthchecks" "proxy" "ds" "rabbitmq" "redis" "elasticsearch" "db")
|
||||
FILES=("${PRODUCT}" "notify" "healthchecks" "proxy" "ds" "rabbitmq" "redis" "opensearch" "dashboards" "db")
|
||||
|
||||
LOG_DIR="${DOCKERCOMPOSE}/logs"
|
||||
mkdir -p ${LOG_DIR}
|
||||
|
@ -28,10 +28,12 @@ help(){
|
||||
echo " Use comma to register multiple emails, ex:"
|
||||
echo " u1@example.com,u2@example.com."
|
||||
echo " DOMAIN Domain name to apply"
|
||||
echo " Use comma to register multiple domains, ex:"
|
||||
echo " example.com,s1.example.com,s2.example.com."
|
||||
echo ""
|
||||
echo "Using your own certificates via the -f or --file parameter:"
|
||||
echo " docspace-ssl-setup --file DOMAIN CERTIFICATE PRIVATEKEY"
|
||||
echo " DOMAIN Domain name to apply."
|
||||
echo " DOMAIN Main domain name to apply."
|
||||
echo " CERTIFICATE Path to the certificate file for the domain."
|
||||
echo " PRIVATEKEY Path to the private key file for the certificate."
|
||||
echo ""
|
||||
@ -69,8 +71,18 @@ case $1 in
|
||||
fi
|
||||
fi
|
||||
|
||||
docker-compose -f ${DOCKERCOMPOSE}/proxy.yml up -d
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml restart onlyoffice-files
|
||||
if grep -q '${CERTIFICATE_PATH}:' ${DOCKERCOMPOSE}/docspace.yml; then
|
||||
sed -i '/${CERTIFICATE_PATH}:/d' ${DOCKERCOMPOSE}/docspace.yml
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml up --force-recreate -d onlyoffice-doceditor onlyoffice-login onlyoffice-socket onlyoffice-ssoauth
|
||||
fi
|
||||
|
||||
if grep -q 'USE_UNAUTHORIZED_STORAGE' ${DOCKERCOMPOSE}/ds.yml; then
|
||||
sed -i '/USE_UNAUTHORIZED_STORAGE/d' ${DOCKERCOMPOSE}/ds.yml
|
||||
docker-compose -f ${DOCKERCOMPOSE}/ds.yml up --force-recreate -d
|
||||
fi
|
||||
|
||||
docker-compose -f ${DOCKERCOMPOSE}/proxy.yml up --force-recreate -d
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml up --force-recreate -d onlyoffice-files
|
||||
|
||||
echo "OK"
|
||||
exit 0
|
||||
@ -79,7 +91,8 @@ case $1 in
|
||||
* )
|
||||
if [ "$#" -ge "2" ]; then
|
||||
MAIL=$1
|
||||
DOMAIN=$2
|
||||
DOMAINS=$2
|
||||
DOMAIN=$(cut -d ',' -f 1 <<< "$DOMAINS")
|
||||
LETSENCRYPT_ENABLE="true"
|
||||
|
||||
if ! docker volume inspect "onlyoffice_webroot_path" &> /dev/null; then
|
||||
@ -100,7 +113,7 @@ case $1 in
|
||||
-v onlyoffice_webroot_path:${WEBROOT_PATH} \
|
||||
certbot/certbot certonly \
|
||||
--expand --webroot -w ${WEBROOT_PATH} \
|
||||
--cert-name ${PRODUCT} --non-interactive --agree-tos --email ${MAIL} -d ${DOMAIN}
|
||||
--cert-name ${PRODUCT} --non-interactive --agree-tos --email ${MAIL} -d ${DOMAINS[@]}
|
||||
else
|
||||
help
|
||||
fi
|
||||
@ -113,9 +126,6 @@ PRIVATEKEY_FILE="${PRIVATEKEY_FILE:-"${LETSENCRYPT}/${PRODUCT}/privkey.pem"}"
|
||||
|
||||
if [ -f "${CERTIFICATE_FILE}" ]; then
|
||||
if [ -f "${PRIVATEKEY_FILE}" ]; then
|
||||
docker-compose -f ${DOCKERCOMPOSE}/proxy.yml down
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml stop onlyoffice-files
|
||||
|
||||
sed -i "s~\(APP_URL_PORTAL=\).*~\1\"https://${DOMAIN}\"~g" ${DOCKERCOMPOSE}/.env
|
||||
sed -i "s~\(CERTIFICATE_PATH=\).*~\1\"${CERTIFICATE_FILE}\"~g" ${DOCKERCOMPOSE}/.env
|
||||
sed -i "s~\(CERTIFICATE_KEY_PATH=\).*~\1\"${PRIVATEKEY_FILE}\"~g" ${DOCKERCOMPOSE}/.env
|
||||
@ -137,10 +147,21 @@ if [ -f "${CERTIFICATE_FILE}" ]; then
|
||||
if [ -d /etc/cron.d ]; then
|
||||
echo -e "@weekly root ${DIR}/${PRODUCT}-renew-letsencrypt" | tee /etc/cron.d/${PRODUCT}-letsencrypt
|
||||
fi
|
||||
else
|
||||
CERTIFICATE_SUBJECT=$(openssl x509 -subject -noout -in "${CERTIFICATE_FILE}" | sed 's/subject=//')
|
||||
CERTIFICATE_ISSUER=$(openssl x509 -issuer -noout -in "${CERTIFICATE_FILE}" | sed 's/issuer=//')
|
||||
|
||||
#Checking whether the certificate is self-signed
|
||||
if [[ -n "$CERTIFICATE_SUBJECT" && -n "$CERTIFICATE_ISSUER" && "$CERTIFICATE_SUBJECT" == "$CERTIFICATE_ISSUER" ]]; then
|
||||
sed -i '/app_data:\/.*/a \ - ${CERTIFICATE_PATH}:${CERTIFICATE_PATH}' ${DOCKERCOMPOSE}/docspace.yml
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml up --force-recreate -d onlyoffice-doceditor onlyoffice-login onlyoffice-socket onlyoffice-ssoauth
|
||||
sed -i '/environment:/a \ - USE_UNAUTHORIZED_STORAGE=true' ${DOCKERCOMPOSE}/ds.yml
|
||||
docker-compose -f ${DOCKERCOMPOSE}/ds.yml up --force-recreate -d
|
||||
fi
|
||||
fi
|
||||
|
||||
docker-compose -f ${DOCKERCOMPOSE}/proxy-ssl.yml up -d
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml up -d onlyoffice-files
|
||||
docker-compose -f ${DOCKERCOMPOSE}/proxy-ssl.yml up --force-recreate -d
|
||||
docker-compose -f ${DOCKERCOMPOSE}/docspace.yml up --force-recreate -d onlyoffice-files
|
||||
|
||||
echo "OK"
|
||||
else
|
||||
|
25
install/docker/config/fluent-bit.conf
Normal file
25
install/docker/config/fluent-bit.conf
Normal file
@ -0,0 +1,25 @@
|
||||
[SERVICE]
|
||||
Flush 1
|
||||
Log_Level info
|
||||
Daemon off
|
||||
|
||||
[INPUT]
|
||||
Name forward
|
||||
Listen 127.0.0.1
|
||||
Port 24224
|
||||
|
||||
[INPUT]
|
||||
Name exec
|
||||
Interval_Sec 86400
|
||||
Command curl -s -X POST 'OPENSEARCH_SCHEME://OPENSEARCH_HOST:OPENSEARCH_PORT/OPENSEARCH_INDEX/_delete_by_query' -H 'Content-Type: application/json' -d "{\"query\": {\"range\": {\"@timestamp\": {\"lt\": \"$(date -u -d '30 days ago' '+%Y-%m-%dT%H:%M:%S')\"}}}}"
|
||||
|
||||
[OUTPUT]
|
||||
Name opensearch
|
||||
Match *
|
||||
Host OPENSEARCH_HOST
|
||||
Port OPENSEARCH_PORT
|
||||
Replace_Dots On
|
||||
Suppress_Type_Name On
|
||||
Time_Key @timestamp
|
||||
Type _doc
|
||||
Index OPENSEARCH_INDEX
|
@ -1,11 +1,11 @@
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $proxy_connection;
|
||||
proxy_set_header Host $the_host;
|
||||
proxy_set_header X-Forwarded-Host $the_host;
|
||||
proxy_set_header X-Forwarded-Proto $the_scheme;
|
||||
proxy_set_header Host $this_host;
|
||||
proxy_set_header X-Forwarded-Host $proxy_x_forwarded_host;
|
||||
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
more_clear_headers 'Server';
|
||||
more_clear_headers 'X-Powered-By';
|
||||
proxy_hide_header 'Server';
|
||||
proxy_hide_header 'X-Powered-By';
|
||||
|
||||
## HTTP host
|
||||
server {
|
||||
|
@ -1,8 +1,8 @@
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $proxy_connection;
|
||||
proxy_set_header Host $the_host;
|
||||
proxy_set_header X-Forwarded-Host $the_host;
|
||||
proxy_set_header X-Forwarded-Proto $the_scheme;
|
||||
proxy_set_header Host $this_host;
|
||||
proxy_set_header X-Forwarded-Host $proxy_x_forwarded_host:$proxy_x_forwarded_port;
|
||||
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_hide_header 'Server';
|
||||
proxy_hide_header 'X-Powered-By';
|
||||
|
@ -5,19 +5,19 @@ map $http_host $this_host {
|
||||
default $http_host;
|
||||
}
|
||||
|
||||
map $http_x_forwarded_proto $the_scheme {
|
||||
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
|
||||
default $http_x_forwarded_proto;
|
||||
"" $scheme;
|
||||
}
|
||||
|
||||
map $http_x_forwarded_host $the_host {
|
||||
map $http_x_forwarded_host $proxy_x_forwarded_host {
|
||||
default $http_x_forwarded_host;
|
||||
"" $host;
|
||||
"" $this_host;
|
||||
}
|
||||
|
||||
map $http_x_forwarded_port $proxy_x_forwarded_port {
|
||||
default $http_x_forwarded_port;
|
||||
'' $server_port;
|
||||
default $EXTERNAL_PORT;
|
||||
~^(.*)$ $1;
|
||||
}
|
||||
|
||||
map $http_upgrade $proxy_connection {
|
||||
|
@ -95,3 +95,9 @@ map $SERVICE_CLIENT $service_client {
|
||||
"" 127.0.0.1:5001;
|
||||
default $SERVICE_CLIENT;
|
||||
}
|
||||
|
||||
map $DASHBOARDS_CONTAINER_NAME $dashboards_host {
|
||||
volatile;
|
||||
default onlyoffice-opensearch-dashboards;
|
||||
~^(.*)$ $1;
|
||||
}
|
||||
|
16
install/docker/dashboards.yml
Normal file
16
install/docker/dashboards.yml
Normal file
@ -0,0 +1,16 @@
|
||||
services:
|
||||
onlyoffice-opensearch-dashboards:
|
||||
image: opensearchproject/opensearch-dashboards:${DASHBOARDS_VERSION}
|
||||
container_name: ${DASHBOARDS_CONTAINER_NAME}
|
||||
restart: always
|
||||
environment:
|
||||
- OPENSEARCH_HOSTS=${ELK_SHEME}://${ELK_CONTAINER_NAME}:${ELK_PORT}
|
||||
- "DISABLE_SECURITY_DASHBOARDS_PLUGIN=true"
|
||||
- "SERVER_BASEPATH=/dashboards"
|
||||
expose:
|
||||
- "5601"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: ${NETWORK_NAME}
|
||||
external: true
|
@ -1,9 +1,6 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
onlyoffice-mysql-server:
|
||||
image: ${MYSQL_IMAGE}
|
||||
command: --default-authentication-plugin=caching_sha2_password
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
container_name: ${MYSQL_CONTAINER_NAME}
|
||||
@ -19,6 +16,11 @@ services:
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "mysqladmin ping --silent"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
- ./config/mysql/conf.d/:/etc/mysql/conf.d
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
dnsmasq:
|
||||
image: jpillora/dnsmasq
|
||||
|
@ -39,6 +39,9 @@ LOG_LEVEL = os.environ["LOG_LEVEL"].lower() if environ.get("LOG_LEVEL") else Non
|
||||
DEBUG_INFO = os.environ["DEBUG_INFO"] if environ.get("DEBUG_INFO") else "false"
|
||||
SAMESITE = os.environ["SAMESITE"] if environ.get("SAMESITE") else "None"
|
||||
|
||||
CERTIFICATE_PATH = os.environ.get("CERTIFICATE_PATH")
|
||||
CERTIFICATE_PARAM = "NODE_EXTRA_CA_CERTS=" + CERTIFICATE_PATH + " " if CERTIFICATE_PATH and os.path.exists(CERTIFICATE_PATH) else ""
|
||||
|
||||
DOCUMENT_CONTAINER_NAME = os.environ["DOCUMENT_CONTAINER_NAME"] if environ.get("DOCUMENT_CONTAINER_NAME") else "onlyoffice-document-server"
|
||||
DOCUMENT_SERVER_JWT_SECRET = os.environ["DOCUMENT_SERVER_JWT_SECRET"] if environ.get("DOCUMENT_SERVER_JWT_SECRET") else "your_jwt_secret"
|
||||
DOCUMENT_SERVER_JWT_HEADER = os.environ["DOCUMENT_SERVER_JWT_HEADER"] if environ.get("DOCUMENT_SERVER_JWT_HEADER") else "AuthorizationJwt"
|
||||
@ -47,14 +50,13 @@ DOCUMENT_SERVER_URL_EXTERNAL = os.environ["DOCUMENT_SERVER_URL_EXTERNAL"] if env
|
||||
DOCUMENT_SERVER_URL_PUBLIC = DOCUMENT_SERVER_URL_EXTERNAL if DOCUMENT_SERVER_URL_EXTERNAL else os.environ["DOCUMENT_SERVER_URL_PUBLIC"] if environ.get("DOCUMENT_SERVER_URL_PUBLIC") else "/ds-vpath/"
|
||||
DOCUMENT_SERVER_CONNECTION_HOST = DOCUMENT_SERVER_URL_EXTERNAL if DOCUMENT_SERVER_URL_EXTERNAL else DOCUMENT_SERVER_URL_INTERNAL
|
||||
|
||||
ELK_CONTAINER_NAME = os.environ["ELK_CONTAINER_NAME"] if environ.get("ELK_CONTAINER_NAME") else "onlyoffice-elasticsearch"
|
||||
ELK_CONTAINER_NAME = os.environ["ELK_CONTAINER_NAME"] if environ.get("ELK_CONTAINER_NAME") else "onlyoffice-opensearch"
|
||||
ELK_SHEME = os.environ["ELK_SHEME"] if environ.get("ELK_SHEME") else "http"
|
||||
ELK_HOST = os.environ["ELK_HOST"] if environ.get("ELK_HOST") else None
|
||||
ELK_PORT = os.environ["ELK_PORT"] if environ.get("ELK_PORT") else "9200"
|
||||
ELK_THREADS = os.environ["ELK_THREADS"] if environ.get("ELK_THREADS") else "1"
|
||||
ELK_CONNECTION_HOST = ELK_HOST if ELK_HOST else ELK_CONTAINER_NAME
|
||||
|
||||
KAFKA_HOST = os.environ["KAFKA_HOST"] if environ.get("KAFKA_HOST") else "kafka:9092"
|
||||
RUN_FILE = sys.argv[1] if (len(sys.argv) > 1) else "none"
|
||||
LOG_FILE = sys.argv[2] if (len(sys.argv) > 2) else "none"
|
||||
CORE_EVENT_BUS = sys.argv[3] if (len(sys.argv) > 3) else ""
|
||||
@ -81,7 +83,7 @@ class RunServices:
|
||||
self.PATH_TO_CONF = PATH_TO_CONF
|
||||
@dispatch(str)
|
||||
def RunService(self, RUN_FILE):
|
||||
os.system("node " + RUN_FILE + " --app.port=" + self.SERVICE_PORT +\
|
||||
os.system(CERTIFICATE_PARAM + "node " + RUN_FILE + " --app.port=" + self.SERVICE_PORT +\
|
||||
" --app.appsettings=" + self.PATH_TO_CONF)
|
||||
return 1
|
||||
|
||||
@ -89,7 +91,7 @@ class RunServices:
|
||||
def RunService(self, RUN_FILE, ENV_EXTENSION):
|
||||
if ENV_EXTENSION == "none":
|
||||
self.RunService(RUN_FILE)
|
||||
os.system("node " + RUN_FILE + " --app.port=" + self.SERVICE_PORT +\
|
||||
os.system(CERTIFICATE_PARAM + "node " + RUN_FILE + " --app.port=" + self.SERVICE_PORT +\
|
||||
" --app.appsettings=" + self.PATH_TO_CONF +\
|
||||
" --app.environment=" + ENV_EXTENSION)
|
||||
return 1
|
||||
@ -213,18 +215,14 @@ if OAUTH_REDIRECT_URL:
|
||||
|
||||
writeJsonFile(filePath, jsonData)
|
||||
|
||||
filePath = "/app/onlyoffice/config/elastic.json"
|
||||
jsonData = openJsonFile(filePath)
|
||||
jsonData["elastic"]["Scheme"] = ELK_SHEME
|
||||
jsonData["elastic"]["Host"] = ELK_CONNECTION_HOST
|
||||
jsonData["elastic"]["Port"] = ELK_PORT
|
||||
jsonData["elastic"]["Threads"] = ELK_THREADS
|
||||
writeJsonFile(filePath, jsonData)
|
||||
|
||||
filePath = "/app/onlyoffice/config/kafka.json"
|
||||
jsonData = openJsonFile(filePath)
|
||||
jsonData.update({"kafka": {"BootstrapServers": KAFKA_HOST}})
|
||||
writeJsonFile(filePath, jsonData)
|
||||
if ENV_EXTENSION != "dev":
|
||||
filePath = "/app/onlyoffice/config/elastic.json"
|
||||
jsonData = openJsonFile(filePath)
|
||||
jsonData["elastic"]["Scheme"] = ELK_SHEME
|
||||
jsonData["elastic"]["Host"] = ELK_CONNECTION_HOST
|
||||
jsonData["elastic"]["Port"] = ELK_PORT
|
||||
jsonData["elastic"]["Threads"] = ELK_THREADS
|
||||
writeJsonFile(filePath, jsonData)
|
||||
|
||||
filePath = "/app/onlyoffice/config/socket.json"
|
||||
jsonData = openJsonFile(filePath)
|
||||
|
@ -50,7 +50,7 @@ DOCUMENT_SERVER_URL_PUBLIC=${DOCUMENT_SERVER_URL_PUBLIC:-"/ds-vpath/"}
|
||||
DOCUMENT_SERVER_URL_INTERNAL=${DOCUMENT_SERVER_URL_INTERNAL:-"${SHEME}://${PRODUCT}-document-server/"}
|
||||
|
||||
ELK_SHEME=${ELK_SHEME:-"http"}
|
||||
ELK_HOST=${ELK_HOST:-"${PRODUCT}-elasticsearch"}
|
||||
ELK_HOST=${ELK_HOST:-"${PRODUCT}-opensearch"}
|
||||
ELK_PORT=${ELK_PORT:-"9200"}
|
||||
ELK_THREADS=${ELK_THREADS:-"1"}
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-profiles-local: &x-profiles-local
|
||||
profiles: ["backend-local"]
|
||||
environment:
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-healthcheck: &x-healthcheck
|
||||
test: curl --fail http://127.0.0.1 || exit 1
|
||||
interval: 60s
|
||||
@ -64,30 +63,31 @@ x-service: &x-service-base
|
||||
- people_data:/var/www/products/ASC.People/server/
|
||||
|
||||
services:
|
||||
onlyoffice-elasticsearch:
|
||||
onlyoffice-opensearch:
|
||||
<<: [*x-profiles-extra-services]
|
||||
image: onlyoffice/elasticsearch:${ELK_VERSION}
|
||||
container_name: ${ELK_HOST}
|
||||
image: onlyoffice/opensearch:${ELK_VERSION}
|
||||
container_name: ${ELK_CONTAINER_NAME}
|
||||
restart: always
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- bootstrap.memory_lock=true
|
||||
- "ES_JAVA_OPTS=-Xms4g -Xmx4g -Dlog4j2.formatMsgNoLookups=true"
|
||||
- "OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g -Dlog4j2.formatMsgNoLookups=true"
|
||||
- "indices.fielddata.cache.size=30%"
|
||||
- "indices.memory.index_buffer_size=30%"
|
||||
- "ingest.geoip.downloader.enabled=false"
|
||||
- "DISABLE_INSTALL_DEMO_CONFIG=true"
|
||||
- "DISABLE_SECURITY_PLUGIN=true"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65535
|
||||
hard: 65535
|
||||
soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
|
||||
hard: 65536
|
||||
volumes:
|
||||
- es_data:/usr/share/elasticsearch/data
|
||||
- os_data:/usr/share/opensearch/data
|
||||
expose:
|
||||
- "9200"
|
||||
- "9300"
|
||||
- "9600" # required for Performance Analyzer
|
||||
|
||||
onlyoffice-rabbitmq:
|
||||
<<: [*x-profiles-extra-services]
|
||||
@ -281,6 +281,7 @@ services:
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- SERVICE_PORT=${SERVICE_PORT}
|
||||
- DASHBOARDS_CONTAINER_NAME=${DASHBOARDS_CONTAINER_NAME}
|
||||
volumes:
|
||||
- router_log:/var/log/nginx
|
||||
|
||||
@ -303,7 +304,7 @@ networks:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
es_data:
|
||||
os_data:
|
||||
router_log:
|
||||
app_data:
|
||||
files_data:
|
||||
|
@ -32,7 +32,6 @@ x-service: &x-service-base
|
||||
DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}
|
||||
DOCUMENT_CONTAINER_NAME: ${DOCUMENT_CONTAINER_NAME}
|
||||
DOCUMENT_SERVER_URL_EXTERNAL: ${DOCUMENT_SERVER_URL_EXTERNAL}
|
||||
KAFKA_HOST: ${KAFKA_HOST}
|
||||
ELK_CONTAINER_NAME: ${ELK_CONTAINER_NAME}
|
||||
ELK_SHEME: ${ELK_SHEME}
|
||||
ELK_HOST: ${ELK_HOST}
|
||||
@ -51,6 +50,7 @@ x-service: &x-service-base
|
||||
ROUTER_HOST: ${ROUTER_HOST}
|
||||
LOG_LEVEL: ${LOG_LEVEL}
|
||||
DEBUG_INFO: ${DEBUG_INFO}
|
||||
CERTIFICATE_PATH: ${CERTIFICATE_PATH}
|
||||
volumes:
|
||||
#- /app/onlyoffice/CommunityServer/data:/app/onlyoffice/data
|
||||
- app_data:/app/onlyoffice/data
|
||||
@ -161,7 +161,7 @@ services:
|
||||
- "5013"
|
||||
healthcheck:
|
||||
<<: *x-healthcheck
|
||||
test: curl --fail http://${SERVICE_DOCEDITOR}/health || exit 1
|
||||
test: curl --fail http://${SERVICE_DOCEDITOR}/doceditor/health || exit 1
|
||||
|
||||
onlyoffice-login:
|
||||
<<: *x-service-base
|
||||
@ -171,7 +171,7 @@ services:
|
||||
- "5011"
|
||||
healthcheck:
|
||||
<<: *x-healthcheck
|
||||
test: curl --fail http://${SERVICE_LOGIN}/health || exit 1
|
||||
test: curl --fail http://${SERVICE_LOGIN}/login/health || exit 1
|
||||
|
||||
onlyoffice-router:
|
||||
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-router:${DOCKER_TAG}"
|
||||
@ -225,6 +225,9 @@ services:
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
- SERVICE_PORT=${SERVICE_PORT}
|
||||
- DASHBOARDS_CONTAINER_NAME=${DASHBOARDS_CONTAINER_NAME}
|
||||
- DASHBOARDS_USERNAME=${DASHBOARDS_USERNAME}
|
||||
- DASHBOARDS_PASSWORD=${DASHBOARDS_PASSWORD}
|
||||
volumes:
|
||||
- router_log:/var/log/nginx
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: '3.6'
|
||||
services:
|
||||
onlyoffice-document-server:
|
||||
image: "${DOCUMENT_SERVER_IMAGE_NAME}"
|
||||
|
@ -1,32 +0,0 @@
|
||||
version: "3"
|
||||
services:
|
||||
onlyoffice-elasticsearch:
|
||||
image: onlyoffice/elasticsearch:${ELK_VERSION}
|
||||
container_name: ${ELK_CONTAINER_NAME}
|
||||
restart: always
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- bootstrap.memory_lock=true
|
||||
- "ES_JAVA_OPTS=-Xms4g -Xmx4g -Dlog4j2.formatMsgNoLookups=true"
|
||||
- "indices.fielddata.cache.size=30%"
|
||||
- "indices.memory.index_buffer_size=30%"
|
||||
- "ingest.geoip.downloader.enabled=false"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65535
|
||||
hard: 65535
|
||||
volumes:
|
||||
- es_data:/usr/share/elasticsearch/data
|
||||
expose:
|
||||
- "9200"
|
||||
- "9300"
|
||||
networks:
|
||||
default:
|
||||
name: ${NETWORK_NAME}
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
es_data:
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-service:
|
||||
&x-service-base
|
||||
container_name: base
|
||||
|
@ -1,43 +0,0 @@
|
||||
version: "3.6"
|
||||
services:
|
||||
onlyoffice-zookeeper:
|
||||
image: zookeeper:latest
|
||||
container_name: ${ZOO_HOST}
|
||||
restart: always
|
||||
expose:
|
||||
- "2181"
|
||||
environment:
|
||||
ZOO_MY_ID: 1
|
||||
ZOO_PORT: ${ZOO_PORT:-2181}
|
||||
ZOO_SERVER: ${ZOO_SERVER}
|
||||
volumes:
|
||||
- /app/onlyoffice/data/zookeeper/zoo_data:/data
|
||||
- /app/onlyoffice/data/zookeeper/zoo_log:/datalog
|
||||
|
||||
onlyoffice-kafka:
|
||||
image: confluentinc/cp-kafka:latest
|
||||
container_name: ${KAFKA_HOST}
|
||||
restart: always
|
||||
expose:
|
||||
- "9092"
|
||||
depends_on:
|
||||
- onlyoffice-zookeeper
|
||||
environment:
|
||||
KAFKA_ADVERTISED_LISTENERS: ${KAFKA_ADVERTISED_LISTENERS}
|
||||
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: ${KAFKA_LISTENER_SECURITY_PROTOCOL_MAP}
|
||||
KAFKA_INTER_BROKER_LISTENER_NAME: ${KAFKA_INTER_BROKER_LISTENER_NAME}
|
||||
KAFKA_ZOOKEEPER_CONNECT: ${KAFKA_ZOOKEEPER_CONNECT}
|
||||
KAFKA_BROKER_ID: ${KAFKA_BROKER_ID}
|
||||
KAFKA_LOG4J_LOGGERS: ${KAFKA_LOG4J_LOGGERS}
|
||||
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: ${KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR}
|
||||
volumes:
|
||||
#- /app/onlyoffice/data/kafka_data:/var/lib/kafka/data
|
||||
- kafka_data:/var/lib/kafka/data
|
||||
|
||||
volumes:
|
||||
kafka_data:
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: ${NETWORK_NAME}
|
||||
external: true
|
@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
onlyoffice-migration-runner:
|
||||
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration-runner:${DOCKER_TAG}"
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-healthcheck:
|
||||
&x-healthcheck
|
||||
test: curl --fail http://127.0.0.1 || exit 1
|
||||
@ -34,7 +33,6 @@ x-service:
|
||||
DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}
|
||||
DOCUMENT_CONTAINER_NAME: ${DOCUMENT_CONTAINER_NAME}
|
||||
DOCUMENT_SERVER_URL_EXTERNAL: ${DOCUMENT_SERVER_URL_EXTERNAL}
|
||||
KAFKA_HOST: ${KAFKA_HOST}
|
||||
ELK_CONTAINER_NAME: ${ELK_CONTAINER_NAME}
|
||||
ELK_SHEME: ${ELK_SHEME}
|
||||
ELK_HOST: ${ELK_HOST}
|
||||
|
35
install/docker/opensearch.yml
Normal file
35
install/docker/opensearch.yml
Normal file
@ -0,0 +1,35 @@
|
||||
services:
|
||||
onlyoffice-opensearch:
|
||||
image: onlyoffice/opensearch:${ELK_VERSION}
|
||||
container_name: ${ELK_CONTAINER_NAME}
|
||||
restart: always
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- bootstrap.memory_lock=true
|
||||
- "OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g -Dlog4j2.formatMsgNoLookups=true"
|
||||
- "indices.fielddata.cache.size=30%"
|
||||
- "indices.memory.index_buffer_size=30%"
|
||||
- "DISABLE_INSTALL_DEMO_CONFIG=true"
|
||||
- "DISABLE_SECURITY_PLUGIN=true"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
|
||||
hard: 65536
|
||||
volumes:
|
||||
- os_data:/usr/share/opensearch/data
|
||||
expose:
|
||||
- "9200"
|
||||
- "9600" # required for Performance Analyzer
|
||||
ports:
|
||||
- 127.0.0.1:9200:9200
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: ${NETWORK_NAME}
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
os_data:
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
WRONG_PORTAL_NAME_URL=${WRONG_PORTAL_NAME_URL:-""}
|
||||
REDIS_HOST=${REDIS_HOST:-"${REDIS_CONTAINER_NAME}"}
|
||||
REDIS_PORT=${REDIS_PORT:-"6379"}
|
||||
@ -9,3 +9,4 @@ sed -i "s~\(redis_host =\).*~\1 \"$REDIS_HOST\"~" /etc/nginx/conf.d/onlyoffice.c
|
||||
sed -i "s~\(redis_port =\).*~\1 $REDIS_PORT~" /etc/nginx/conf.d/onlyoffice.conf
|
||||
sed -i "s~\(redis_pass =\).*~\1 \"$REDIS_PASSWORD\"~" /etc/nginx/conf.d/onlyoffice.conf
|
||||
sed -i "s~\(\"wrongPortalNameUrl\":\).*,~\1 \"${WRONG_PORTAL_NAME_URL}\",~g" /var/www/public/scripts/config.json
|
||||
echo "${DASHBOARDS_USERNAME:-onlyoffice}:$(openssl passwd -6 -stdin <<< "${DASHBOARDS_PASSWORD:-onlyoffice}")" > /etc/nginx/.htpasswd_dashboards
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-healthcheck:
|
||||
&x-healthcheck
|
||||
test: curl --fail http://127.0.0.1 || exit 1
|
||||
@ -20,6 +19,7 @@ services:
|
||||
- 443:443
|
||||
environment:
|
||||
- ROUTER_HOST=${ROUTER_HOST}
|
||||
- EXTERNAL_PORT=${EXTERNAL_PORT}
|
||||
volumes:
|
||||
- webroot_path:/letsencrypt
|
||||
- proxy_log:/var/log/nginx
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3.8"
|
||||
x-healthcheck:
|
||||
&x-healthcheck
|
||||
test: curl --fail http://127.0.0.1 || exit 1
|
||||
@ -19,6 +18,7 @@ services:
|
||||
- ${EXTERNAL_PORT}:80
|
||||
environment:
|
||||
- ROUTER_HOST=${ROUTER_HOST}
|
||||
- EXTERNAL_PORT=${EXTERNAL_PORT}
|
||||
volumes:
|
||||
- webroot_path:/letsencrypt
|
||||
- proxy_log:/var/log/nginx
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3"
|
||||
services:
|
||||
onlyoffice-rabbitmq:
|
||||
image: rabbitmq:3
|
||||
|
@ -1,4 +1,3 @@
|
||||
version: "3"
|
||||
services:
|
||||
onlyoffice-redis:
|
||||
image: redis:7
|
||||
|
@ -26,9 +26,12 @@ sed 's/teamlab.info/onlyoffice.com/g' -i config/autofac.consumers.json
|
||||
|
||||
sed -e 's_etc/nginx_etc/openresty_g' -e 's/listen\s\+\([0-9]\+\);/listen 127.0.0.1:\1;/g' -i config/nginx/*.conf
|
||||
sed -i "s#\$public_root#/var/www/%{product}/public/#g" config/nginx/onlyoffice.conf
|
||||
sed -e 's/$router_host/127.0.0.1/g' -e 's/the_host/host/g' -e 's/the_scheme/scheme/g' -e 's_includes_/etc/openresty/includes_g' -i install/docker/config/nginx/onlyoffice-proxy*.conf
|
||||
sed -E 's_(http://)[^:]+(:5601)_\1localhost\2_g' -i config/nginx/onlyoffice.conf
|
||||
sed -e 's/$router_host/127.0.0.1/g' -e 's/this_host\|proxy_x_forwarded_host/host/g' -e 's/proxy_x_forwarded_proto/scheme/g' -e 's/proxy_x_forwarded_port/server_port/g' -e 's_includes_/etc/openresty/includes_g' -i install/docker/config/nginx/onlyoffice-proxy*.conf
|
||||
sed -e '/.pid/d' -e '/temp_path/d' -e 's_etc/nginx_etc/openresty_g' -e 's/\.log/-openresty.log/g' -i install/docker/config/nginx/templates/nginx.conf.template
|
||||
sed -i "s_\(.*root\).*;_\1 \"/var/www/%{product}\";_g" -i install/docker/config/nginx/letsencrypt.conf
|
||||
sed -i '/^\s*Name\s\+forward\s*$/d; /^\s*Listen\s\+127\.0\.0\.1\s*$/d; /^\s*Port\s\+24224\s*$/d' -i install/docker/config/fluent-bit.conf
|
||||
sed -i "0,/\[INPUT\]/ s/\(\[INPUT\]\)/\1\n Name tail\n Path \/var\/log\/onlyoffice\/%{product}\/*.log\n Path_Key filename/" -i install/docker/config/fluent-bit.conf
|
||||
|
||||
find %{_builddir}/server/publish/ \
|
||||
%{_builddir}/server/ASC.Migration.Runner \
|
||||
|
@ -76,6 +76,7 @@
|
||||
%defattr(-, onlyoffice, onlyoffice, -)
|
||||
%config %{_sysconfdir}/openresty/includes/*
|
||||
%config %{_sysconfdir}/openresty/conf.d/*
|
||||
%config %{_sysconfdir}/openresty/html/*
|
||||
%attr(744, root, root) %{_bindir}/%{product}-ssl-setup
|
||||
%config %{_sysconfdir}/onlyoffice/%{product}/openresty/nginx.conf.template
|
||||
%dir %{_sysconfdir}/onlyoffice/
|
||||
@ -83,6 +84,7 @@
|
||||
%dir %{_sysconfdir}/onlyoffice/%{product}/openresty/
|
||||
%{buildpath}/public/
|
||||
%{buildpath}/client/
|
||||
%{buildpath}/management/
|
||||
|
||||
%files studio-notify
|
||||
%defattr(-, onlyoffice, onlyoffice, -)
|
||||
|
@ -16,26 +16,36 @@ mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup.BackgroundTasks/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ClearEvents/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ApiSystem/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/public/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/public/campaigns/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.People/server/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.People/client/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Login/login/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/service/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/editor/"
|
||||
# Hidden folders are not copied when applying a mask * (only in RPM), so we explicitly copy .next directory in this way
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/editor/.next/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/client/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/client/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/management/"
|
||||
mkdir -p "%{buildroot}%{_var}/log/onlyoffice/%{product}/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/includes/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/conf.d/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/html/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/openresty"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/.private/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/logrotate.d"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/fluent-bit/"
|
||||
mkdir -p "%{buildroot}%{_docdir}/%{name}-%{version}-%{release}/"
|
||||
mkdir -p "%{buildroot}%{_bindir}/"
|
||||
cp -rf %{_builddir}/publish/web/public/* "%{buildroot}%{buildpath}/public/"
|
||||
cp -rf %{_builddir}/campaigns/src/campaigns/* "%{buildroot}%{buildpath}/public/campaigns"
|
||||
cp -rf %{_builddir}/publish/web/login/* "%{buildroot}%{buildpath}/products/ASC.Login/login/"
|
||||
cp -rf %{_builddir}/publish/web/editor/* "%{buildroot}%{buildpath}/products/ASC.Files/editor/"
|
||||
cp -rf %{_builddir}/publish/web/editor/.next/* "%{buildroot}%{buildpath}/products/ASC.Files/editor/.next/"
|
||||
cp -rf %{_builddir}/server/products/ASC.Files/Server/DocStore/* "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
|
||||
cp -rf %{_builddir}/publish/web/client/* "%{buildroot}%{buildpath}/client/"
|
||||
cp -rf %{_builddir}/publish/web/management/* "%{buildroot}%{buildpath}/management/"
|
||||
cp -rf %{_builddir}/server/publish/services/ASC.Web.Studio/service/* "%{buildroot}%{buildpath}/studio/ASC.Web.Studio/"
|
||||
cp -rf %{_builddir}/server/publish/services/ASC.Web.HealthChecks.UI/service/* "%{buildroot}%{buildpath}/services/ASC.Web.HealthChecks.UI/"
|
||||
cp -rf %{_builddir}/server/publish/services/ASC.Web.Api/service/* "%{buildroot}%{buildpath}/studio/ASC.Web.Api/"
|
||||
@ -64,4 +74,6 @@ cp -rf %{_builddir}/buildtools/install/common/%{product}-ssl-setup "%{buildroot}
|
||||
cp -rf %{_builddir}/buildtools/install/common/%{product}-configuration "%{buildroot}%{_bindir}/%{product}-configuration"
|
||||
cp -rf %{_builddir}/buildtools/config/nginx/onlyoffice*.conf "%{buildroot}%{_sysconfdir}/openresty/conf.d/"
|
||||
cp -rf %{_builddir}/buildtools/config/nginx/includes/onlyoffice*.conf "%{buildroot}%{_sysconfdir}/openresty/includes/"
|
||||
cp -rf %{_builddir}/buildtools/config/nginx/html/*.html "%{buildroot}%{_sysconfdir}/openresty/html/"
|
||||
cp -rf %{_builddir}/buildtools/config/* "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/"
|
||||
cp -rf %{_builddir}/buildtools/install/docker/config/fluent-bit.conf "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/"
|
||||
|
@ -25,7 +25,8 @@ Source1: https://github.com/ONLYOFFICE/%{product}-client/archive/master.t
|
||||
Source2: https://github.com/ONLYOFFICE/%{product}-server/archive/master.tar.gz#/server.tar.gz
|
||||
Source3: https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz#/DocStore.tar.gz
|
||||
Source4: https://github.com/ONLYOFFICE/dictionaries/archive/master.tar.gz#/dictionaries.tar.gz
|
||||
Source5: %{product}.rpmlintrc
|
||||
Source5: https://github.com/ONLYOFFICE/ASC.Web.Campaigns/archive/master.tar.gz#/campaigns.tar.gz
|
||||
Source6: %{product}.rpmlintrc
|
||||
|
||||
BuildRequires: nodejs >= 18.0
|
||||
BuildRequires: yarn
|
||||
@ -66,9 +67,10 @@ rm -rf %{_rpmdir}/%{_arch}/%{name}-* %{_builddir}/*
|
||||
tar -xf %{SOURCE0} --transform='s,^[^/]\+,buildtools,' -C %{_builddir}
|
||||
tar -xf %{SOURCE1} --transform='s,^[^/]\+,client,' -C %{_builddir}
|
||||
tar -xf %{SOURCE2} --transform='s,^[^/]\+,server,' -C %{_builddir}
|
||||
tar -xf %{SOURCE3} --transform='s,^[^/]\+,dictionaries,' -C %{_builddir}/client/common/Tests/Frontend.Translations.Tests
|
||||
tar -xf %{SOURCE4} --transform='s,^[^/]\+,DocStore,' -C %{_builddir}/server/products/ASC.Files/Server
|
||||
cp %{SOURCE5} .
|
||||
tar -xf %{SOURCE3} --transform='s,^[^/]\+,DocStore,' -C %{_builddir}/server/products/ASC.Files/Server
|
||||
tar -xf %{SOURCE4} --transform='s,^[^/]\+,dictionaries,' -C %{_builddir}/client/common/Tests/Frontend.Translations.Tests
|
||||
tar -xf %{SOURCE5} --transform='s,^[^/]\+,campaigns,' -C %{_builddir}
|
||||
cp %{SOURCE6} .
|
||||
|
||||
%include build.spec
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
<ROW Property="ARPURLUPDATEINFO" Value="https://www.onlyoffice.com/download-docspace.aspx"/>
|
||||
<ROW Property="BASE_DOMAIN" Value="localhost"/>
|
||||
<ROW Property="COMMON_SHORTCUT_NAME" Value="ONLYOFFICE"/>
|
||||
<ROW Property="DASHBOARDS_PWD" Value=" "/>
|
||||
<ROW Property="DATABASE_MIGRATION" Value="true"/>
|
||||
<ROW Property="DB_HOST" Value="localhost"/>
|
||||
<ROW Property="DB_NAME" Value="onlyoffice"/>
|
||||
@ -55,6 +56,7 @@
|
||||
<ROW Property="MySQLConnector" Value="MySQL Connector/ODBC 8.0.21 x86"/>
|
||||
<ROW Property="NEED_REINDEX_OPENSEARCH" Value="FALSE" ValueLocId="-"/>
|
||||
<ROW Property="OPENSEARCH_HOST" Value="localhost" ValueLocId="-"/>
|
||||
<ROW Property="OPENSEARCH_INDEX" Value="fluentbit" ValueLocId="-"/>
|
||||
<ROW Property="OPENSEARCH_MSG" Value="Unable to connect to remote OpenSearch server at "/>
|
||||
<ROW Property="OPENSEARCH_PORT" Value="9200" ValueLocId="-"/>
|
||||
<ROW Property="OPENSEARCH_SCHEME" Value="http" ValueLocId="-"/>
|
||||
@ -111,68 +113,68 @@
|
||||
<ROW Property="WindowsTypeNTDisplay" MultiBuildValue="DefaultBuild:32-bit Windows versions#ExeBuild:32-bit Windows versions" ValueLocId="-"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
|
||||
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.ApiSystem_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.API|ASC.ApiSystem" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.ClearEvents_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.CLE|ASC.ClearEvents" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Data.Backup.BackgroundTasks_Dir" Directory_Parent="services_Dir" DefaultDir="ASCDAT~2.BAC|ASC.Data.Backup.BackgroundTasks" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Data.Backup_Dir" Directory_Parent="services_Dir" DefaultDir="ASCDAT~1.BAC|ASC.Data.Backup" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Files.Service_Dir" Directory_Parent="services_Dir" DefaultDir="ASCFIL~1.SER|ASC.Files.Service" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Files_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.FIL|ASC.Files" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Login_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.LOG|ASC.Login" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Migration.Runner_Dir" Directory_Parent="services_Dir" DefaultDir="ASCMIG~1.RUN|ASC.Migration.Runner" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Notify_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.NOT|ASC.Notify" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.People_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.PEO|ASC.People" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Socket.IO_Dir" Directory_Parent="services_Dir" DefaultDir="ASCSOC~1.IO|ASC.Socket.IO" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.SsoAuth_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.SSO|ASC.SsoAuth" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Studio.Notify_Dir" Directory_Parent="services_Dir" DefaultDir="ASCSTU~1.NOT|ASC.Studio.Notify" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Web.Api_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.API|ASC.Web.Api" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Web.HealthChecks.UI_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.UI|ASC.Web.HealthChecks.UI" DirectoryOptions="12"/>
|
||||
<ROW Directory="ASC.Web.Studio_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.STU|ASC.Web.Studio" DirectoryOptions="12"/>
|
||||
<ROW Directory="Data_Dir" Directory_Parent="APPDIR" DefaultDir="Data" DirectoryOptions="12"/>
|
||||
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.ApiSystem_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.API|ASC.ApiSystem" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.ClearEvents_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.CLE|ASC.ClearEvents" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Data.Backup.BackgroundTasks_Dir" Directory_Parent="services_Dir" DefaultDir="ASCDAT~2.BAC|ASC.Data.Backup.BackgroundTasks" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Data.Backup_Dir" Directory_Parent="services_Dir" DefaultDir="ASCDAT~1.BAC|ASC.Data.Backup" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Files.Service_Dir" Directory_Parent="services_Dir" DefaultDir="ASCFIL~1.SER|ASC.Files.Service" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Files_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.FIL|ASC.Files" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Login_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.LOG|ASC.Login" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Migration.Runner_Dir" Directory_Parent="services_Dir" DefaultDir="ASCMIG~1.RUN|ASC.Migration.Runner" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Notify_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.NOT|ASC.Notify" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.People_Dir" Directory_Parent="products_Dir" DefaultDir="ASC~1.PEO|ASC.People" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Socket.IO_Dir" Directory_Parent="services_Dir" DefaultDir="ASCSOC~1.IO|ASC.Socket.IO" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.SsoAuth_Dir" Directory_Parent="services_Dir" DefaultDir="ASC~1.SSO|ASC.SsoAuth" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Studio.Notify_Dir" Directory_Parent="services_Dir" DefaultDir="ASCSTU~1.NOT|ASC.Studio.Notify" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Web.Api_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.API|ASC.Web.Api" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Web.HealthChecks.UI_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.UI|ASC.Web.HealthChecks.UI" DirectoryOptions="15"/>
|
||||
<ROW Directory="ASC.Web.Studio_Dir" Directory_Parent="services_Dir" DefaultDir="ASCWEB~1.STU|ASC.Web.Studio" DirectoryOptions="15"/>
|
||||
<ROW Directory="Data_Dir" Directory_Parent="APPDIR" DefaultDir="Data" DirectoryOptions="15"/>
|
||||
<ROW Directory="DesktopFolder" Directory_Parent="TARGETDIR" DefaultDir="DESKTO~1|DesktopFolder" IsPseudoRoot="1"/>
|
||||
<ROW Directory="Logs_Dir" Directory_Parent="APPDIR" DefaultDir="Logs" DirectoryOptions="12"/>
|
||||
<ROW Directory="NewFolder_1_Dir" Directory_Parent="service_1_Dir" DefaultDir="config" DirectoryOptions="12"/>
|
||||
<ROW Directory="Logs_Dir" Directory_Parent="APPDIR" DefaultDir="Logs" DirectoryOptions="15"/>
|
||||
<ROW Directory="NewFolder_1_Dir" Directory_Parent="service_1_Dir" DefaultDir="config" DirectoryOptions="15"/>
|
||||
<ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
|
||||
<ROW Directory="conf_Dir" Directory_Parent="nginx_Dir" DefaultDir="conf" DirectoryOptions="12"/>
|
||||
<ROW Directory="config_2_Dir" Directory_Parent="service_5_Dir" DefaultDir="config" DirectoryOptions="12"/>
|
||||
<ROW Directory="config_Dir" Directory_Parent="APPDIR" DefaultDir="config" DirectoryOptions="12"/>
|
||||
<ROW Directory="editor_Dir" Directory_Parent="ASC.Files_Dir" DefaultDir="editor" DirectoryOptions="12"/>
|
||||
<ROW Directory="includes_Dir" Directory_Parent="conf_Dir" DefaultDir="includes" DirectoryOptions="12"/>
|
||||
<ROW Directory="login_Dir" Directory_Parent="ASC.Login_Dir" DefaultDir="login" DirectoryOptions="12"/>
|
||||
<ROW Directory="logs_Dir" Directory_Parent="nginx_Dir" DefaultDir="logs" DirectoryOptions="12"/>
|
||||
<ROW Directory="nginx_Dir" Directory_Parent="APPDIR" DefaultDir="nginx" DirectoryOptions="12"/>
|
||||
<ROW Directory="products_Dir" Directory_Parent="APPDIR" DefaultDir="products" DirectoryOptions="12"/>
|
||||
<ROW Directory="server_2_Dir" Directory_Parent="ASC.Files_Dir" DefaultDir="server" DirectoryOptions="12"/>
|
||||
<ROW Directory="server_5_Dir" Directory_Parent="ASC.People_Dir" DefaultDir="server" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_11_Dir" Directory_Parent="ASC.Studio.Notify_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_15_Dir" Directory_Parent="ASC.Web.Api_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_16_Dir" Directory_Parent="ASC.Web.Studio_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_17_Dir" Directory_Parent="ASC.ApiSystem_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_1_Dir" Directory_Parent="ASC.Socket.IO_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_2_Dir" Directory_Parent="ASC.Data.Backup_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_3_Dir" Directory_Parent="ASC.Data.Backup.BackgroundTasks_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_4_Dir" Directory_Parent="ASC.Web.HealthChecks.UI_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_5_Dir" Directory_Parent="ASC.SsoAuth_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_6_Dir" Directory_Parent="ASC.Migration.Runner_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_7_Dir" Directory_Parent="ASC.Files.Service_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_9_Dir" Directory_Parent="ASC.Notify_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="service_Dir" Directory_Parent="ASC.ClearEvents_Dir" DefaultDir="service" DirectoryOptions="12"/>
|
||||
<ROW Directory="services_Dir" Directory_Parent="APPDIR" DefaultDir="services" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_10_Dir" Directory_Parent="service_16_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_13_Dir" Directory_Parent="server_2_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_14_Dir" Directory_Parent="server_5_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_16_Dir" Directory_Parent="service_17_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_1_Dir" Directory_Parent="service_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_2_Dir" Directory_Parent="service_3_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_3_Dir" Directory_Parent="service_7_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_4_Dir" Directory_Parent="service_2_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_5_Dir" Directory_Parent="service_4_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_6_Dir" Directory_Parent="service_6_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_7_Dir" Directory_Parent="service_9_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_8_Dir" Directory_Parent="service_11_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_9_Dir" Directory_Parent="service_15_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="temp_Dir" Directory_Parent="nginx_Dir" DefaultDir="temp" DirectoryOptions="12"/>
|
||||
<ROW Directory="tools_Dir" Directory_Parent="APPDIR" DefaultDir="tools" DirectoryOptions="12"/>
|
||||
<ROW Directory="conf_Dir" Directory_Parent="nginx_Dir" DefaultDir="conf" DirectoryOptions="15"/>
|
||||
<ROW Directory="config_2_Dir" Directory_Parent="service_5_Dir" DefaultDir="config" DirectoryOptions="15"/>
|
||||
<ROW Directory="config_Dir" Directory_Parent="APPDIR" DefaultDir="config" DirectoryOptions="15"/>
|
||||
<ROW Directory="editor_Dir" Directory_Parent="ASC.Files_Dir" DefaultDir="editor" DirectoryOptions="15"/>
|
||||
<ROW Directory="includes_Dir" Directory_Parent="conf_Dir" DefaultDir="includes" DirectoryOptions="15"/>
|
||||
<ROW Directory="login_Dir" Directory_Parent="ASC.Login_Dir" DefaultDir="login" DirectoryOptions="15"/>
|
||||
<ROW Directory="logs_Dir" Directory_Parent="nginx_Dir" DefaultDir="logs" DirectoryOptions="15"/>
|
||||
<ROW Directory="nginx_Dir" Directory_Parent="APPDIR" DefaultDir="nginx" DirectoryOptions="15"/>
|
||||
<ROW Directory="products_Dir" Directory_Parent="APPDIR" DefaultDir="products" DirectoryOptions="15"/>
|
||||
<ROW Directory="server_2_Dir" Directory_Parent="ASC.Files_Dir" DefaultDir="server" DirectoryOptions="15"/>
|
||||
<ROW Directory="server_5_Dir" Directory_Parent="ASC.People_Dir" DefaultDir="server" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_11_Dir" Directory_Parent="ASC.Studio.Notify_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_15_Dir" Directory_Parent="ASC.Web.Api_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_16_Dir" Directory_Parent="ASC.Web.Studio_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_17_Dir" Directory_Parent="ASC.ApiSystem_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_1_Dir" Directory_Parent="ASC.Socket.IO_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_2_Dir" Directory_Parent="ASC.Data.Backup_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_3_Dir" Directory_Parent="ASC.Data.Backup.BackgroundTasks_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_4_Dir" Directory_Parent="ASC.Web.HealthChecks.UI_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_5_Dir" Directory_Parent="ASC.SsoAuth_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_6_Dir" Directory_Parent="ASC.Migration.Runner_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_7_Dir" Directory_Parent="ASC.Files.Service_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_9_Dir" Directory_Parent="ASC.Notify_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="service_Dir" Directory_Parent="ASC.ClearEvents_Dir" DefaultDir="service" DirectoryOptions="15"/>
|
||||
<ROW Directory="services_Dir" Directory_Parent="APPDIR" DefaultDir="services" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_10_Dir" Directory_Parent="service_16_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_13_Dir" Directory_Parent="server_2_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_14_Dir" Directory_Parent="server_5_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_16_Dir" Directory_Parent="service_17_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_1_Dir" Directory_Parent="service_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_2_Dir" Directory_Parent="service_3_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_3_Dir" Directory_Parent="service_7_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_4_Dir" Directory_Parent="service_2_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_5_Dir" Directory_Parent="service_4_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_6_Dir" Directory_Parent="service_6_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_7_Dir" Directory_Parent="service_9_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_8_Dir" Directory_Parent="service_11_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_9_Dir" Directory_Parent="service_15_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="temp_Dir" Directory_Parent="nginx_Dir" DefaultDir="temp" DirectoryOptions="15"/>
|
||||
<ROW Directory="tools_Dir" Directory_Parent="APPDIR" DefaultDir="tools" DirectoryOptions="15"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="AI_CustomARPName" ComponentId="{5283455D-3786-42EC-9887-FCF453E2FBF9}" Directory_="APPDIR" Attributes="4" KeyPath="DisplayName" Options="1"/>
|
||||
@ -261,7 +263,7 @@
|
||||
<ROW Component="tools" ComponentId="{3BE057FE-EC94-4514-8961-A8660D9E6EB4}" Directory_="tools_Dir" Attributes="0"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
|
||||
<ROW Feature="ApiSystem" Feature_Parent="DotnetServices" Title=".NET ApiSystem Service" Description="Feature contains .NET ApiSystem service" Display="31" Level="4" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="ApiSystem" Feature_Parent="DotnetServices" Title=".NET ApiSystem Service" Description="Feature contains .NET ApiSystem service" Display="31" Level="1" Directory_="APPDIR" Attributes="16"/>
|
||||
<ROW Feature="BackgroundTasks" Feature_Parent="DotnetServices" Title=".NET BackgroundTasks Service" Description="Feature contains .NET BackgroundTasks service" Display="25" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="ClearEvents" Feature_Parent="DotnetServices" Title=".NET ClearEvents Service" Description="Feature contains .NET ClearEvents service" Display="29" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="DataBackup" Feature_Parent="DotnetServices" Title=".NET DataBackup Service" Description="Feature contains .NET DataBackup service" Display="27" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
@ -287,25 +289,25 @@
|
||||
<ATTRIBUTE name="CurrentFeature" value="MainFeature"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
|
||||
<ROW File="ASC.Files.exe" Component_="ASC.Files.exe" FileName="ASCFIL~1.EXE|ASC.Files.exe" Attributes="0" SourcePath="Files\products\ASC.Files\server\ASC.Files.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.People.exe" Component_="ASC.People.exe" FileName="ASCPEO~1.EXE|ASC.People.exe" Attributes="0" SourcePath="Files\products\ASC.People\server\ASC.People.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.ApiSystem.exe" Component_="ASC.ApiSystem.exe" FileName="ASCAPI~1.EXE|ASC.ApiSystem.exe" Attributes="0" SourcePath="Files\services\ASC.ApiSystem\service\ASC.ApiSystem.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Data.Backup.exe" Component_="ASC.Data.Backup.exe" FileName="ASCDAT~1.EXE|ASC.Data.Backup.exe" Attributes="0" SourcePath="Files\services\ASC.Data.Backup\service\ASC.Data.Backup.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Files.Service.exe" Component_="ASC.Files.Service.exe" FileName="ASCFIL~1.EXE|ASC.Files.Service.exe" Attributes="0" SourcePath="Files\services\ASC.Files.Service\service\ASC.Files.Service.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Notify.exe" Component_="ASC.Notify.exe" FileName="ASCNOT~1.EXE|ASC.Notify.exe" Attributes="0" SourcePath="Files\services\ASC.Notify\service\ASC.Notify.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Studio.Notify.exe" Component_="ASC.Studio.Notify.exe" FileName="ASCSTU~1.EXE|ASC.Studio.Notify.exe" Attributes="0" SourcePath="Files\services\ASC.Studio.Notify\service\ASC.Studio.Notify.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Web.Studio.exe" Component_="ASC.Web.Studio.exe" FileName="ASCWEB~1.EXE|ASC.Web.Studio.exe" Attributes="0" SourcePath="Files\services\ASC.Web.Studio\service\ASC.Web.Studio.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Web.Api.exe" Component_="ASC.Web.Api.exe" FileName="ASCWEB~1.EXE|ASC.Web.Api.exe" Attributes="0" SourcePath="Files\services\ASC.Web.Api\service\ASC.Web.Api.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Proxy.exe" Component_="Proxy.exe" FileName="Proxy.exe" Attributes="0" SourcePath="Files\tools\Proxy.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Socket.IO.exe" Component_="Socket.IO.exe" FileName="SOCKET~1.EXE|Socket.IO.exe" Attributes="0" SourcePath="Files\tools\Socket.IO.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="SsoAuth.exe" Component_="SsoAuth.exe" FileName="SsoAuth.exe" Attributes="0" SourcePath="Files\tools\SsoAuth.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.ClearEvents.exe" Component_="ASC.ClearEvents.exe" FileName="ASCCLE~1.EXE|ASC.ClearEvents.exe" Attributes="0" SourcePath="Files\services\ASC.ClearEvents\service\ASC.ClearEvents.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Data.Backup.BackgroundTasks.exe" Component_="ASC.Data.Backup.BackgroundTasks.exe" FileName="ASCDAT~1.EXE|ASC.Data.Backup.BackgroundTasks.exe" Attributes="0" SourcePath="Files\services\ASC.Data.Backup.BackgroundTasks\service\ASC.Data.Backup.BackgroundTasks.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Migration.Runner.exe" Component_="ASC.Migration.Runner.exe" FileName="ASCMIG~2.EXE|ASC.Migration.Runner.exe" Attributes="0" SourcePath="Files\services\ASC.Migration.Runner\service\ASC.Migration.Runner.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="DocEditor.exe" Component_="DocEditor.exe" FileName="DOCEDI~1.EXE|DocEditor.exe" Attributes="0" SourcePath="Files\tools\DocEditor.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Login.exe" Component_="Login.exe" FileName="LOGIN~1.EXE|Login.exe" Attributes="0" SourcePath="Files\tools\Login.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="icon.ico" Component_="icon.ico" FileName="icon.ico" Attributes="0" SourcePath="Resources\icon.ico" SelfReg="false"/>
|
||||
<ROW File="ASC.Web.HealthChecks.UI.exe" Component_="ASC.Web.HealthChecks.UI.exe" FileName="ASCWEB~1.EXE|ASC.Web.HealthChecks.UI.exe" Attributes="0" SourcePath="Files\services\ASC.Web.HealthChecks.UI\service\ASC.Web.HealthChecks.UI.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Files.exe" Component_="ASC.Files.exe" FileName="ASCFIL~1.EXE|ASC.Files.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\products\ASC.Files\server\ASC.Files.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.People.exe" Component_="ASC.People.exe" FileName="ASCPEO~1.EXE|ASC.People.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\products\ASC.People\server\ASC.People.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.ApiSystem.exe" Component_="ASC.ApiSystem.exe" FileName="ASCAPI~1.EXE|ASC.ApiSystem.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.ApiSystem\service\ASC.ApiSystem.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Data.Backup.exe" Component_="ASC.Data.Backup.exe" FileName="ASCDAT~1.EXE|ASC.Data.Backup.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Data.Backup\service\ASC.Data.Backup.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Files.Service.exe" Component_="ASC.Files.Service.exe" FileName="ASCFIL~1.EXE|ASC.Files.Service.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Files.Service\service\ASC.Files.Service.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Notify.exe" Component_="ASC.Notify.exe" FileName="ASCNOT~1.EXE|ASC.Notify.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Notify\service\ASC.Notify.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Studio.Notify.exe" Component_="ASC.Studio.Notify.exe" FileName="ASCSTU~1.EXE|ASC.Studio.Notify.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Studio.Notify\service\ASC.Studio.Notify.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Web.Studio.exe" Component_="ASC.Web.Studio.exe" FileName="ASCWEB~1.EXE|ASC.Web.Studio.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Web.Studio\service\ASC.Web.Studio.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Web.Api.exe" Component_="ASC.Web.Api.exe" FileName="ASCWEB~1.EXE|ASC.Web.Api.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Web.Api\service\ASC.Web.Api.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Proxy.exe" Component_="Proxy.exe" FileName="Proxy.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\tools\Proxy.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Socket.IO.exe" Component_="Socket.IO.exe" FileName="SOCKET~1.EXE|Socket.IO.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\tools\Socket.IO.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="SsoAuth.exe" Component_="SsoAuth.exe" FileName="SsoAuth.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\tools\SsoAuth.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.ClearEvents.exe" Component_="ASC.ClearEvents.exe" FileName="ASCCLE~1.EXE|ASC.ClearEvents.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.ClearEvents\service\ASC.ClearEvents.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Data.Backup.BackgroundTasks.exe" Component_="ASC.Data.Backup.BackgroundTasks.exe" FileName="ASCDAT~1.EXE|ASC.Data.Backup.BackgroundTasks.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Data.Backup.BackgroundTasks\service\ASC.Data.Backup.BackgroundTasks.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="ASC.Migration.Runner.exe" Component_="ASC.Migration.Runner.exe" FileName="ASCMIG~2.EXE|ASC.Migration.Runner.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Migration.Runner\service\ASC.Migration.Runner.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="DocEditor.exe" Component_="DocEditor.exe" FileName="DOCEDI~1.EXE|DocEditor.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\tools\DocEditor.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="Login.exe" Component_="Login.exe" FileName="LOGIN~1.EXE|Login.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\tools\Login.exe" SelfReg="false" DigSign="true"/>
|
||||
<ROW File="icon.ico" Component_="icon.ico" FileName="icon.ico" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Resources\icon.ico" SelfReg="false"/>
|
||||
<ROW File="ASC.Web.HealthChecks.UI.exe" Component_="ASC.Web.HealthChecks.UI.exe" FileName="ASCWEB~1.EXE|ASC.Web.HealthChecks.UI.exe" Version="65535.65535.65535.65535" Attributes="0" SourcePath="Files\services\ASC.Web.HealthChecks.UI\service\ASC.Web.HealthChecks.UI.exe" SelfReg="false" DigSign="true"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
|
||||
<ROW BootstrOptKey="GlobalOptions" DownloadFolder="[AppDataFolder][|Manufacturer]\[|ProductName]\prerequisites" Options="2"/>
|
||||
@ -515,6 +517,7 @@
|
||||
<ROW Property="DOCUMENT_SERVER_JWT_SECRET" Signature_="AppSearchSign_23"/>
|
||||
<ROW Property="DOCUMENT_SERVER_PORT" Signature_="AppSearchSign_24"/>
|
||||
<ROW Property="MACHINE_KEY" Signature_="AppSearchSign_25"/>
|
||||
<ROW Property="DASHBOARDS_PWD" Signature_="AppSearchSign_26"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
|
||||
<ROW Name="NetFirewall.dll" SourcePath="<AI_CUSTACTS>NetFirewall.dll"/>
|
||||
@ -536,7 +539,6 @@
|
||||
<ROW Name="xmlCfg.dll" SourcePath="<AI_CUSTACTS>xmlCfg.dll"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiConditionComponent">
|
||||
<ROW Feature_="ApiSystem" Level="1" Condition="API_SYSTEM_SERVICE = 1"/>
|
||||
<ROW Feature_="DocumentServer" Level="4" Condition="DOCUMENT_SERVER_INSTALL_NONE = 1"/>
|
||||
<ROW Feature_="ClearEvents" Level="4" Condition="CLEAR_EVENTS_SERVICE = 0"/>
|
||||
<ROW Feature_="DataBackup" Level="4" Condition="DATA_BACKUP_SERVICE = 0"/>
|
||||
@ -957,7 +959,11 @@
|
||||
<ROW Action="AI_DATA_SETTER_24" Type="51" Source="CustomActionData" Target="OpenResty"/>
|
||||
<ROW Action="AI_DATA_SETTER_25" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_26" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_27" Type="51" Source="StartOpenSearchDashboardsService" Target="OpenSearchDashboards"/>
|
||||
<ROW Action="AI_DATA_SETTER_28" Type="51" Source="CustomActionData" Target="OpenSearchDashboards"/>
|
||||
<ROW Action="AI_DATA_SETTER_29" Type="51" Source="CustomActionData" Target="Fluent-Bit"/>
|
||||
<ROW Action="AI_DATA_SETTER_3" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_30" Type="51" Source="CustomActionData" Target="Fluent-Bit"/>
|
||||
<ROW Action="AI_DATA_SETTER_4" Type="51" Source="CustomActionData" Target="[~]"/>
|
||||
<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]"/>
|
||||
@ -1025,16 +1031,16 @@
|
||||
<ROW Action="AI_XmlRollback" Type="11521" Source="xmlCfg.dll" Target="OnXmlRollback" WithoutSeq="true"/>
|
||||
<ROW Action="AI_XmlUninstall" Type="1" Source="xmlCfg.dll" Target="OnXmlUninstall" AdditionalSeq="AI_DATA_SETTER_15"/>
|
||||
<ROW Action="DetectMySQLService" Type="1" Source="aicustact.dll" Target="DetectProcess" Options="3" AdditionalSeq="AI_DATA_SETTER_9"/>
|
||||
<ROW Action="MoveNginxConfigs" Type="4102" Source="utils.vbs" Target="MoveNginxConfigs"/>
|
||||
<ROW Action="MoveConfigs" Type="4102" Source="utils.vbs" Target="MoveConfigs"/>
|
||||
<ROW Action="MySQLConfigure" Type="262" Source="utils.vbs" Target="MySQLConfigure"/>
|
||||
<ROW Action="OpenCancelUrl" Type="194" Source="viewer.exe" Target="http://www.onlyoffice.com/install-canceled.aspx" WithoutSeq="true" Options="1"/>
|
||||
<ROW Action="OpenSearchInstallPlugin" Type="1030" Source="utils.vbs" Target="OpenSearchInstallPlugin"/>
|
||||
<ROW Action="OpenSearchSetup" Type="6" Source="utils.vbs" Target="OpenSearchSetup"/>
|
||||
<ROW Action="PostgreSQLConfigure" Type="4102" Source="utils.vbs" Target="PostgreSqlConfigure"/>
|
||||
<ROW Action="RedisSearchSetup" Type="6" Source="utils.vbs" Target="RedisSetup"/>
|
||||
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFilesFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace#ExeBuild:[ProgramFilesFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace"/>
|
||||
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]" MultiBuildTarget="DefaultBuild:[ProgramMenuFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace#ExeBuild:[ProgramMenuFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace"/>
|
||||
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
|
||||
<ROW Action="SetDashboardsPwd" Type="6" Source="utils.vbs" Target="SetDashboardsPwd"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Type="6" Source="utils.vbs" Target="SetDocumentServerJWTSecretProp"/>
|
||||
<ROW Action="SetMACHINEKEY" Type="262" Source="utils.vbs" Target="SetMACHINEKEY"/>
|
||||
<ROW Action="SetSERVERNAME" Type="51" Source="SERVER_NAME" Target="[ComputerName]"/>
|
||||
@ -1043,13 +1049,17 @@
|
||||
<ROW Action="Set_DS_JWT_HEADER" Type="51" Source="DOCUMENT_SERVER_JWT_HEADER" Target="[JWT_HEADER]"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Type="51" Source="DOCUMENT_SERVER_JWT_SECRET" Target="[JWT_SECRET]"/>
|
||||
<ROW Action="Set_LICENSE_PATH" Type="51" Source="LICENSE_PATH" Target="[APPDIR]\Data\license.lic"/>
|
||||
<ROW Action="StartFluentBitService" Type="1" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_30"/>
|
||||
<ROW Action="StartMigrationRunner" Type="3074" Source="viewer.exe" Target="/EnforcedRunAsAdmin /RunAsAdmin /HideWindow /dir "[APPDIR]services\ASC.Migration.Runner\service" "[APPDIR]services\ASC.Migration.Runner\service\ASC.Migration.Runner.exe" standalone=true" Options="1"/>
|
||||
<ROW Action="StartMySQLService" Type="1" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_11"/>
|
||||
<ROW Action="StartOpenResty" Type="1" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_24"/>
|
||||
<ROW Action="StartOpenSearchDashboardsService" Type="3073" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_27"/>
|
||||
<ROW Action="StartOpenSearchService" Type="3073" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_13"/>
|
||||
<ROW Action="StartService" Type="3073" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_19"/>
|
||||
<ROW Action="StopFluentBitService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_29"/>
|
||||
<ROW Action="StopMySQLService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_10"/>
|
||||
<ROW Action="StopOpenResty" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_23"/>
|
||||
<ROW Action="StopOpenSearchDashboardsService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_28"/>
|
||||
<ROW Action="StopOpenSearchService" Type="1" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_12"/>
|
||||
<ROW Action="StopRedisService" Type="3073" Source="aicustact.dll" Target="StopWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_16"/>
|
||||
<ROW Action="TestOpenSearchConnection" Type="1" Source="Utils.CA.dll" Target="CheckTCPAvailability" WithoutSeq="true" AdditionalSeq="AI_DATA_SETTER_1"/>
|
||||
@ -1197,16 +1207,15 @@
|
||||
<ROW Action="AI_DATA_SETTER_8" Condition="(REMOVE)" Sequence="3103"/>
|
||||
<ROW Action="StopMySQLService" Condition="( NOT Installed AND NOT OLDPRODUCTS ) AND ( AI_PROCESS_STATE <> "Not Found" )" Sequence="1611"/>
|
||||
<ROW Action="AI_DATA_SETTER_10" Condition="( NOT Installed AND NOT OLDPRODUCTS ) AND ( AI_PROCESS_STATE <> "Not Found" )" Sequence="1610"/>
|
||||
<ROW Action="Set_APPDIR_FORWARD_SLASH" Condition="( NOT Installed )" Sequence="1626"/>
|
||||
<ROW Action="AI_DATA_SETTER_6" Condition="( NOT Installed )" Sequence="1621"/>
|
||||
<ROW Action="Set_APPDIR_FORWARD_SLASH" Condition="( NOT Installed )" Sequence="1632"/>
|
||||
<ROW Action="AI_DATA_SETTER_6" Condition="( NOT Installed )" Sequence="1627"/>
|
||||
<ROW Action="DetectMySQLService" Condition="( ( NOT Installed AND NOT OLDPRODUCTS ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) )" Sequence="1609"/>
|
||||
<ROW Action="AI_DATA_SETTER_9" Condition="( ( NOT Installed AND NOT OLDPRODUCTS ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) )" Sequence="1608"/>
|
||||
<ROW Action="OpenSearchSetup" Condition="( NOT Installed )" Sequence="1617"/>
|
||||
<ROW Action="StopOpenSearchService" Condition="( NOT Installed )" Sequence="1615"/>
|
||||
<ROW Action="AI_DATA_SETTER_12" Condition="( NOT Installed )" Sequence="1614"/>
|
||||
<ROW Action="OpenSearchInstallPlugin" Condition="( NOT Installed )" Sequence="1616"/>
|
||||
<ROW Action="StartOpenSearchService" Condition="( NOT Installed )" Sequence="1619"/>
|
||||
<ROW Action="AI_DATA_SETTER_13" Condition="( NOT Installed )" Sequence="1618"/>
|
||||
<ROW Action="OpenSearchSetup" Condition="( NOT Installed )" Sequence="1621"/>
|
||||
<ROW Action="StopOpenSearchService" Condition="( NOT Installed )" Sequence="1617"/>
|
||||
<ROW Action="AI_DATA_SETTER_12" Condition="( NOT Installed )" Sequence="1616"/>
|
||||
<ROW Action="StartOpenSearchService" Condition="( NOT Installed )" Sequence="1623"/>
|
||||
<ROW Action="AI_DATA_SETTER_13" Condition="( NOT Installed )" Sequence="1622"/>
|
||||
<ROW Action="AI_GetArpIconPath" Sequence="1401"/>
|
||||
<ROW Action="StartMySQLService" Condition="( NOT Installed AND NOT OLDPRODUCTS ) AND ( AI_PROCESS_STATE <> "Not Found" )" Sequence="1613"/>
|
||||
<ROW Action="AI_DATA_SETTER_11" Condition="( NOT Installed AND NOT OLDPRODUCTS ) AND ( AI_PROCESS_STATE <> "Not Found" )" Sequence="1612"/>
|
||||
@ -1223,28 +1232,36 @@
|
||||
<ROW Action="AI_DATA_SETTER_15" Condition="(REMOVE)" Sequence="3101"/>
|
||||
<ROW Action="AI_ConfigPermissions" Condition="REMOVE <> "ALL"" Sequence="5852"/>
|
||||
<ROW Action="AI_DATA_SETTER_4" Condition="REMOVE <> "ALL"" Sequence="5851"/>
|
||||
<ROW Action="MsiUnpublishAssemblies" Condition="Installed" Sequence="1628" SeqType="0" MsiKey="MsiUnpublishAssemblies"/>
|
||||
<ROW Action="RedisSearchSetup" Condition="( NOT Installed )" Sequence="1620"/>
|
||||
<ROW Action="StopRedisService" Condition="( NOT Installed )" Sequence="1623"/>
|
||||
<ROW Action="AI_DATA_SETTER_16" Condition="( NOT Installed )" Sequence="1622"/>
|
||||
<ROW Action="StartService" Condition="( NOT Installed )" Sequence="1625"/>
|
||||
<ROW Action="AI_DATA_SETTER_19" Condition="( NOT Installed )" Sequence="1624"/>
|
||||
<ROW Action="MsiUnpublishAssemblies" Condition="Installed" Sequence="1635" SeqType="0" MsiKey="MsiUnpublishAssemblies"/>
|
||||
<ROW Action="RedisSearchSetup" Condition="( NOT Installed )" Sequence="1626"/>
|
||||
<ROW Action="StopRedisService" Condition="( NOT Installed )" Sequence="1629"/>
|
||||
<ROW Action="AI_DATA_SETTER_16" Condition="( NOT Installed )" Sequence="1628"/>
|
||||
<ROW Action="StartService" Condition="( NOT Installed )" Sequence="1631"/>
|
||||
<ROW Action="AI_DATA_SETTER_19" Condition="( NOT Installed )" Sequence="1630"/>
|
||||
<ROW Action="PostgreSQLConfigure" Condition="( NOT Installed )" Sequence="1607"/>
|
||||
<ROW Action="AI_FwInstall" Condition="(VersionNT >= 501) AND (REMOVE <> "ALL")" Sequence="5802"/>
|
||||
<ROW Action="AI_DATA_SETTER_21" Condition="(VersionNT >= 501) AND (REMOVE <> "ALL")" Sequence="5801"/>
|
||||
<ROW Action="AI_FwUninstall" Condition="(VersionNT >= 501) AND (REMOVE="ALL")" Sequence="1702"/>
|
||||
<ROW Action="AI_DATA_SETTER_22" Condition="(VersionNT >= 501) AND (REMOVE="ALL")" Sequence="1701"/>
|
||||
<ROW Action="SetSERVERNAME" Condition="( NOT Installed )" Sequence="1604"/>
|
||||
<ROW Action="MoveNginxConfigs" Condition="( NOT Installed )" Sequence="6601"/>
|
||||
<ROW Action="StopOpenResty" Condition="( NOT Installed )" Sequence="6603"/>
|
||||
<ROW Action="AI_DATA_SETTER_23" Condition="( NOT Installed )" Sequence="6602"/>
|
||||
<ROW Action="StartOpenResty" Condition="( NOT Installed )" Sequence="6605"/>
|
||||
<ROW Action="AI_DATA_SETTER_24" Condition="( NOT Installed )" Sequence="6604"/>
|
||||
<ROW Action="MoveConfigs" Condition="( NOT Installed )" Sequence="6601"/>
|
||||
<ROW Action="StopOpenResty" Condition="( NOT Installed )" Sequence="6605"/>
|
||||
<ROW Action="AI_DATA_SETTER_23" Condition="( NOT Installed )" Sequence="6604"/>
|
||||
<ROW Action="StartOpenResty" Condition="( NOT Installed )" Sequence="6607"/>
|
||||
<ROW Action="AI_DATA_SETTER_24" Condition="( NOT Installed )" Sequence="6606"/>
|
||||
<ROW Action="Set_LICENSE_PATH" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) OR ( Installed AND ( REMOVE = "ALL" OR AI_INSTALL_MODE = "Remove" ) AND UPGRADINGPRODUCTCODE ) )" Sequence="201"/>
|
||||
<ROW Action="AI_SqlInstall" Condition="(VersionNT >= 500) AND (REMOVE <> "ALL")" Sequence="5502"/>
|
||||
<ROW Action="AI_DATA_SETTER_25" Condition="(VersionNT >= 500) AND (REMOVE <> "ALL")" Sequence="5501"/>
|
||||
<ROW Action="AI_SqlUninstall" Condition="(VersionNT >= 500) AND (REMOVE="ALL")" Sequence="1704"/>
|
||||
<ROW Action="AI_DATA_SETTER_26" Condition="(VersionNT >= 500) AND (REMOVE="ALL")" Sequence="1703"/>
|
||||
<ROW Action="StopOpenSearchDashboardsService" Condition="( NOT Installed )" Sequence="1619"/>
|
||||
<ROW Action="AI_DATA_SETTER_28" Condition="( NOT Installed )" Sequence="1618"/>
|
||||
<ROW Action="StopFluentBitService" Condition="( NOT Installed )" Sequence="1615"/>
|
||||
<ROW Action="AI_DATA_SETTER_29" Condition="( NOT Installed )" Sequence="1614"/>
|
||||
<ROW Action="StartFluentBitService" Condition="( NOT Installed )" Sequence="6603"/>
|
||||
<ROW Action="AI_DATA_SETTER_30" Condition="( NOT Installed )" Sequence="6602"/>
|
||||
<ROW Action="StartOpenSearchDashboardsService" Condition="( NOT Installed )" Sequence="1625"/>
|
||||
<ROW Action="AI_DATA_SETTER_27" Condition="( NOT Installed )" Sequence="1624"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
@ -1270,6 +1287,7 @@
|
||||
<ROW Action="AI_PRESERVE_INSTALL_TYPE" Sequence="199"/>
|
||||
<ROW Action="AI_RestartElevated" Sequence="51" Builds="ExeBuild"/>
|
||||
<ROW Action="SetMACHINEKEY" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( MACHINE_KEY = " " )" Sequence="1107"/>
|
||||
<ROW Action="SetDashboardsPwd" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( DASHBOARDS_PWD = " " )" Sequence="1108"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
|
||||
<ROW Condition="( Version9X OR ( NOT VersionNT64 ) OR ( VersionNT64 AND ((VersionNT64 <> 600) OR (MsiNTProductType <> 1)) AND ((VersionNT64 <> 600) OR (MsiNTProductType = 1)) AND ((VersionNT64 <> 601) OR (MsiNTProductType <> 1)) AND ((VersionNT64 <> 601) OR (MsiNTProductType = 1)) AND ((VersionNT64 <> 602) OR (MsiNTProductType <> 1)) AND ((VersionNT64 <> 602) OR (MsiNTProductType = 1)) AND ((VersionNT64 <> 603) OR (MsiNTProductType <> 1)) AND ((VersionNT64 <> 603) OR (MsiNTProductType = 1)) AND ((VersionNT64 <> 1000) OR (MsiNTProductType <> 1)) AND ((VersionNT64 <> 1100) OR (MsiNTProductType <> 1)) ) )" Description="[ProductName] cannot be installed on the following Windows versions: [WindowsTypeNT64Display]." DescriptionLocId="AI.LaunchCondition.NoSpecificNT64" IsPredefined="true" Builds="DefaultBuild;ExeBuild"/>
|
||||
@ -1308,6 +1326,7 @@
|
||||
<ROW Signature_="AppSearchSign_23" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="DOCUMENT_SERVER_JWT_SECRET" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_24" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="DOCUMENT_SERVER_PORT" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_25" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="MACHINE_KEY" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_26" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="DASHBOARDS_PWD" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_3" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="PS_DB_USER" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_4" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="PS_DB_PWD" Type="2"/>
|
||||
<ROW Signature_="AppSearchSign_5" Root="2" Key="Software\[Manufacturer]\[ShortProductName]" Name="PS_DB_PORT" Type="2"/>
|
||||
@ -1328,6 +1347,7 @@
|
||||
<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="DASHBOARDS_PWD" Root="-1" Key="Software\[Manufacturer]\[ShortProductName]" Name="DASHBOARDS_PWD" Value="[DASHBOARDS_PWD]" Component_="APPDIR"/>
|
||||
<ROW Registry="DB_HOST" Root="-1" Key="Software\[Manufacturer]\[ShortProductName]" Name="DB_HOST" Value="[DB_HOST]" Component_="APPDIR"/>
|
||||
<ROW Registry="DB_NAME" Root="-1" Key="Software\[Manufacturer]\[ShortProductName]" Name="DB_NAME" Value="[DB_NAME]" Component_="APPDIR"/>
|
||||
<ROW Registry="DB_PORT" Root="-1" Key="Software\[Manufacturer]\[ShortProductName]" Name="DB_PORT" Value="[DB_PORT]" Component_="APPDIR"/>
|
||||
@ -1442,7 +1462,7 @@
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiServInstComponent">
|
||||
<ROW ServiceInstall="ServiceName_WebHealthChecksUI" Name="[ServiceName_WebHealthChecksUI]" DisplayName="[ShortProductName] Web.HealthChecks.UI" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5033 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_WebHealthChecksUI]" Component_="ASC.Web.HealthChecks.UI.exe" Description="[ShortProductName] Web.HealthChecks.UI"/>
|
||||
<ROW ServiceInstall="ServiceName_ApiSystemService" Name="[ServiceName_ApiSystemService]" DisplayName="[ShortProductName] ApiSystem" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5010 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_ApiSystemService]" Component_="ASC.ApiSystem.exe" Description="[ShortProductName] ApiSystem"/>
|
||||
<ROW ServiceInstall="ServiceName_ApiSystemService" Name="[ServiceName_ApiSystemService]" DisplayName="[ShortProductName] ApiSystem" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5010 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_ApiSystemService] --core:products:folder="[APPDIR]products" [SUBFOLDER_SERVER]" Component_="ASC.ApiSystem.exe" Description="[ShortProductName] ApiSystem"/>
|
||||
<ROW ServiceInstall="ServiceName_BackgroundTasks" Name="[ServiceName_BackgroundTasks]" DisplayName="[ShortProductName] Data.Backup.BackgroundTasks" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5032 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_BackgroundTasks] --core:products:folder="[APPDIR]products" [SUBFOLDER_SERVER] --core:eventBus:subscriptionClientName=asc_event_bus_backup_queue" Component_="ASC.Data.Backup.BackgroundTasks.exe" Description="[ShortProductName] Data.Backup.BackgroundTasks"/>
|
||||
<ROW ServiceInstall="ServiceName_BackupService" Name="[ServiceName_BackupService]" DisplayName="[ShortProductName] BackupService" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5012 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_BackupService] --core:products:folder="[APPDIR]products" [SUBFOLDER_SERVER]" Component_="ASC.Data.Backup.exe" Description="[ShortProductName] BackupService"/>
|
||||
<ROW ServiceInstall="ServiceName_ClearEvents" Name="[ServiceName_ClearEvents]" DisplayName="[ShortProductName] ClearEvents" ServiceType="16" StartType="2" ErrorControl="1" Arguments="--urls=[APP_URLS]:5027 --ENVIRONMENT=[ENVIRONMENT] --pathToConf="[APPDIR]config" --$STORAGE_ROOT="[APPDIR]Data" --log:dir="[APPDIR]Logs" --log:name=[ServiceName_ClearEvents] --core:products:folder="[APPDIR]products" [SUBFOLDER_SERVER]" Component_="ASC.ClearEvents.exe" Description="[ShortProductName] ClearEvents"/>
|
||||
@ -1473,35 +1493,36 @@
|
||||
<ROW PrereqKey="Certbot" DisplayName="Certbot v2.6.0" VersionMin="2.6.0" SetupFileUrl="https://github.com/certbot/certbot/releases/download/v2.6.0/certbot-beta-installer-win_amd64_signed.exe" Location="1" 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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yxm" TargetName="Certbot" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="DocumentServer" DisplayName="DocumentServer" SetupFileUrl="onlyoffice-documentserver.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 /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" BasicUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" NoUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" Options="fi=" TargetName="onlyoffice-documentserver.exe" Builds="DefaultBuild" Feature="DocumentServer" RepairComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG"/>
|
||||
<ROW PrereqKey="DocumentServer.EE" DisplayName="DocumentServer-EE" SetupFileUrl="onlyoffice-documentserver-ee.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 /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LICENSE_PATH="[APPDIR]Data\license.lic" /LOG" BasicUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LICENSE_PATH="[APPDIR]Data\license.lic" /LOG" NoUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LICENSE_PATH="[APPDIR]Data\license.lic" /LOG" Options="fi=" TargetName="onlyoffice-documentserver-ee.exe" Builds="ExeBuild" Feature="DocumentServer.EE" RepairComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LICENSE_PATH="[APPDIR]Data\license.lic" /LOG"/>
|
||||
<ROW PrereqKey="EA5B60A5CAD4115A8386D017CC889B9" DisplayName="ASP.NET Core Runtime 7.0.3 x64" VersionMin="7.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/d37efccc-2ba1-4fc9-a1ef-a8e1e77fb681/b9a20fc29ff05f18d81620ec88ade699/aspnetcore-runtime-7.0.3-win-x64.exe" Location="1" ExactSize="9562088" 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="a87c53a62579d43c6e20683ad686c991" TargetName="ASP.NET Core 7.0" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="EA5B60A5CAD4115A8386D017CC889B9" DisplayName="ASP.NET Core Runtime 8.0.2 x64" VersionMin="8.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/34d3e426-9f3c-45a6-8496-f21b3adbbf5f/475aec17378cc8ab0fcfe535e84698f9/aspnetcore-runtime-8.0.2-win-x64.exe" Location="1" ExactSize="10416064" 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="6928ea97bdbb2dbfd7da1d3ae9eaaf9f" TargetName="ASP.NET Core 8.0" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="ErlangOTP" DisplayName="Erlang v26.0.2 x64" VersionMin="26.0.2" SetupFileUrl="redist\otp_win64_26.0.2.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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="ym" TargetName="ErlangOTP\otp_win64_26.0.2.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="Erlangv26.0x64" DisplayName="Erlang v26.0.2 x64" VersionMin="26.0.2" SetupFileUrl="https://github.com/erlang/otp/releases/download/OTP-26.0.2/otp_win64_26.0.2.exe" Location="1" 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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="ym" TargetName="Erlang v26.0 x64" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="F3520F64DA5998338D97129FAD2" DisplayName=".NET Runtime 7.0.3 x64" VersionMin="7.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/c69813b7-2ece-4c2e-8c45-e33006985e18/61cc8fe4693a662b2da55ad932a46446/dotnet-runtime-7.0.3-win-x64.exe" Location="1" ExactSize="28223424" 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="c9d6796b57a1630d4f004302262c241e" TargetName=".NET 7.0" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="F3520F64DA5998338D97129FAD2" DisplayName=".NET Runtime 8.0.2 x64" VersionMin="8.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/a4bc7333-6e30-4e2d-b300-0b4f23537e5b/4b81af6d46a02fba5d9ce030af438c67/dotnet-runtime-8.0.2-win-x64.exe" Location="1" ExactSize="28409632" 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="511beb27f4390b07c4c93d6d27fe9446" TargetName=".NET 8.0" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="FFmpegEssentials" DisplayName="FFmpeg v6.0 x64" VersionMin="6.0.0" SetupFileUrl="redist\FFmpeg_Essentials.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="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="FFmpeg Essentials\FFmpeg_Essentials.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="FFmpegx64" DisplayName="FFmpeg v6.0 x64" VersionMin="6.0.0" SetupFileUrl="https://github.com/icedterminal/ffmpeg-installer/releases/download/6.0.0.20230306/FFmpeg_Essentials.msi" Location="1" 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="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="FFmpeg x64" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="Microsoft.NETFrame" DisplayName=".NET Framework 4.8" VersionMin="4.8" SetupFileUrl="redist\.net_framework_4.8.exe" Location="0" ExactSize="0" Operator="1" ComLine="/q /promptrestart" BasicUiComLine="/q /promptrestart" NoUiComLine="/q /promptrestart" Options="ym" TargetName="Microsoft .NET Framework 4.8\.net_framework_4.8.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="Microsoft.NETRunti" DisplayName=".NET Runtime - 7.0.4" VersionMin="7.0" SetupFileUrl="redist\dotnet-runtime-7.0.4-win-x64.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="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" TargetName="Microsoft .NET Runtime - 7.0.4 (x64)\dotnet-runtime-7.0.4-win-x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MicrosoftASP.NETCo" DisplayName="ASP.NET Core Runtime 7.0.4 x64" VersionMin="7.0" SetupFileUrl="redist\aspnetcore-runtime-7.0.4-win-x64.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="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="yxm" TargetName="Microsoft ASP.NET Core 7.0.4 - Shared Framework (x64)\aspnetcore-runtime-7.0.4-win-x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="Microsoft.NETRunti" DisplayName=".NET Runtime - 8.0.2" VersionMin="8.0" SetupFileUrl="redist\dotnet-runtime-8.0.2-win-x64.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="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" TargetName="Microsoft .NET Runtime - 8.0.2 (x64)\dotnet-runtime-8.0.2-win-x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MicrosoftASP.NETCo" DisplayName="ASP.NET Core Runtime 8.0.2 x64" VersionMin="8.0" SetupFileUrl="redist\aspnetcore-runtime-8.0.2-win-x64.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="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="yxm" TargetName="Microsoft ASP.NET Core 8.0.2 - Shared Framework (x64)\aspnetcore-runtime-8.0.2-win-x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MicrosoftVisualC" DisplayName="Visual C++ Redistributable for Visual Studio 2013 Update 5 x64" VersionMin="12.0" SetupFileUrl="redist\vcredist_2013u5_x64.exe" Location="0" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="Microsoft Visual C++ 2013 Redistributable (x64) - 12.0.40649\vcredist_2013u5_x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MicrosoftVisualC_1" DisplayName="Visual C++ Redistributable for Visual Studio 2015-2019 x86" VersionMin="14.26" SetupFileUrl="redist\VC_redist.x86.exe" Location="0" ExactSize="0" Operator="0" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" TargetName="Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.26.28720\VC_redist.x86.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MicrosoftVisualC_2" DisplayName="Visual C++ Redistributable for Visual Studio 2015-2019 x64" VersionMin="14.26" SetupFileUrl="redist\VC_redist.x64.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" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 x64, Windows Server 2008 R2 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="yxm" TargetName="Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.26.28720\VC_redist.x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MySQLConnectorODBC" DisplayName="MySQL Connector/ODBC 8.0.33 x86" VersionMin="8.0.33" SetupFileUrl="redist\mysql-connector-odbc-8.0.33-win32.msi" Location="0" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="MySQL ConnectorODBC 8.0 (32-bit)\mysql-connector-odbc-8.0.33-win32.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MySQLInstallerCo" DisplayName="MySQL Installer Community 8.0.33 x86" VersionMin="1.6.6.0" SetupFileUrl="redist\mysql-installer-community-8.0.33.0.msi" Location="0" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="MySQL Installer - Community\mysql-installer-community-8.0.33.0.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="MySQLInstallerRunn" DisplayName="MySQL Installer Community 8.0.33 x86 Runner" SetupFileUrl="MySQL Installer Runner.exe" Location="0" ExactSize="0" Operator="1" ComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.33"" BasicUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.33"" NoUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.33"" Options="y" TargetName="MySQL Installer Runner \MySQL Installer Runner.exe" ParentPrereq="RequiredApplication_2"/>
|
||||
<ROW PrereqKey="Node.js" DisplayName="Node.js 18.16.1" VersionMin="18.16.0" SetupFileUrl="redist\node-v18.16.1-x64.msi" Location="0" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="Node.js\node-v18.16.1-x64.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="Node.js" DisplayName="Node.js 20.11.1" VersionMin="20.11.1" SetupFileUrl="redist\node-v20.11.1-x64.msi" Location="0" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="Node.js\node-v20.11.1-x64.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="OpenResty" DisplayName="OpenResty v1.21.4" VersionMin="1.21.4.2" SetupFileUrl="publish\OpenResty.msi" Location="0" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="yxm" TargetName="OpenResty\OpenResty.msi"/>
|
||||
<ROW PrereqKey="OpenSearch2.11.1" DisplayName="OpenSearch v2.11.1 x64" VersionMin="2.11.1" SetupFileUrl="publish\OpenSearch-2.11.1.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="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="OpenSearch 2.11.1\OpenSearch-2.11.1.msi"/>
|
||||
<ROW PrereqKey="OpenSearch2.11.1" DisplayName="OpenSearch v2.11.1 x64" VersionMin="2.11.1" SetupFileUrl="publish\OpenSearch-2.11.1.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="/exenoui /qn" BasicUiComLine="/exenoui /qn" NoUiComLine="/exenoui /qn" Options="y" TargetName="OpenSearch 2.11.1\OpenSearch-2.11.1.exe"/>
|
||||
<ROW PrereqKey="OpenSearchStack" DisplayName="OpenSearchStack v1.0.0 x64" VersionMin="1.0.0" SetupFileUrl="publish\OpenSearchStack.msi" Location="0" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="OpenSearchStack\OpenSearchStack.msi"/>
|
||||
<ROW PrereqKey="PostgreSQL_ODBC" DisplayName="PostgreSQL ODBC Driver v15.0 x64" SetupFileUrl="psqlodbc_15_x64.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="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="myx" TargetName="psqlodbc_x64.msi"/>
|
||||
<ROW PrereqKey="PostgresSQL" DisplayName="PostgreSQL v14.0 x64" VersionMin="14.0" SetupFileUrl="postgresql-14.0-1-windows-x64.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="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" BasicUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" NoUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" Options="xy" TargetName="postgresql-14.0-1-windows-x64.exe"/>
|
||||
<ROW PrereqKey="RabbitMQServer" DisplayName="RabbitMQ v3.12.1 x64" VersionMin="3.12" SetupFileUrl="redist\rabbitmq-server-3.12.1.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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yx" TargetName="RabbitMQ Server\rabbitmq-server-3.12.1.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="RedisonWindows" DisplayName="Redis 5.0.10 x64" VersionMin="5.0" SetupFileUrl="redist\Redis-x64-5.0.10.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="/quiet ADD_INSTALLFOLDER_TO_PATH=1" BasicUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" NoUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" Options="yx" TargetName="Redis on Windows\Redis-x64-5.0.10.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication" DisplayName="MySQL Connector/ODBC 8.0.33 x86" VersionMin="8.0.33" SetupFileUrl="https://cdn.mysql.com/archives/mysql-connector-odbc-8.0/mysql-connector-odbc-8.0.33-win32.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="MySQL Connector ODBC 8.0.33 x86" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_1" DisplayName="Node.js 18.16.1" VersionMin="18.16.0" SetupFileUrl="https://nodejs.org/dist/v18.16.1/node-v18.16.1-x64.msi" Location="1" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="my" TargetName="Node.js v18.16.1 x64" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_1" DisplayName="Node.js 20.11.1" VersionMin="20.11.1" SetupFileUrl="https://nodejs.org/dist/v20.11.1/node-v20.11.1-x64.msi" Location="1" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="my" TargetName="Node.js v20.11.1 x64" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_2" DisplayName="MySQL Installer Community 8.0.33 x86" VersionMin="1.6.6.0" SetupFileUrl="https://cdn.mysql.com/archives/mysql-installer/mysql-installer-community-8.0.33.0.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="MySQL Installer Community 8.0.33 x86" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_3" DisplayName="Certbot v2.6.0" VersionMin="2.6.0" SetupFileUrl="redist\certbot-2.6.0.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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yxm" TargetName="Required Application\certbot-2.6.0.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_5" DisplayName="RabbitMQ v3.12.1 x64" VersionMin="3.12" SetupFileUrl="https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.1/rabbitmq-server-3.12.1.exe" Location="1" 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="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yx" TargetName="RabbitMQ v3.12.1 x64" Builds="DefaultBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication_6" DisplayName="Redis 5.0.10 x64" VersionMin="5.0" SetupFileUrl="http://download.onlyoffice.com/install/windows/redist/Redis-x64-5.0.10.msi" Location="1" 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="/quiet ADD_INSTALLFOLDER_TO_PATH=1" BasicUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" NoUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" Options="yx" TargetName="Redis 5.0.10 x64" Builds="DefaultBuild"/>
|
||||
<ATTRIBUTE name="PrereqsOrder" value="B96F93FA27E74B02866727AAE83982D0 Microsoft.NETFrame F3520F64DA5998338D97129FAD2 Microsoft.NETRunti EA5B60A5CAD4115A8386D017CC889B9 MicrosoftASP.NETCo CA62D813A4E74FA2AAE86A7D7B7B1493 MicrosoftVisualC A918597FE054CCCB65ABDBA0AD8F63C MicrosoftVisualC_1 C4FE6FD5B7C4D07B3A313E754A9A6A8 MicrosoftVisualC_2 RequiredApplication MySQLConnectorODBC RequiredApplication_2 MySQLInstallerCo MySQLInstallerRunn RequiredApplication_1 Node.js OpenSearch2.11.1 Erlangv26.0x64 ErlangOTP RequiredApplication_5 RabbitMQServer RequiredApplication_6 RedisonWindows FFmpegx64 FFmpegEssentials Certbot RequiredApplication_3 PostgreSQL_ODBC PostgresSQL OpenResty DocumentServer DocumentServer.EE"/>
|
||||
<ATTRIBUTE name="PrereqsOrder" value="B96F93FA27E74B02866727AAE83982D0 Microsoft.NETFrame F3520F64DA5998338D97129FAD2 Microsoft.NETRunti EA5B60A5CAD4115A8386D017CC889B9 MicrosoftASP.NETCo CA62D813A4E74FA2AAE86A7D7B7B1493 MicrosoftVisualC A918597FE054CCCB65ABDBA0AD8F63C MicrosoftVisualC_1 C4FE6FD5B7C4D07B3A313E754A9A6A8 MicrosoftVisualC_2 RequiredApplication MySQLConnectorODBC RequiredApplication_2 MySQLInstallerCo MySQLInstallerRunn RequiredApplication_1 Node.js OpenSearch2.11.1 Erlangv26.0x64 ErlangOTP RequiredApplication_5 RabbitMQServer RequiredApplication_6 RedisonWindows FFmpegx64 FFmpegEssentials Certbot RequiredApplication_3 PostgreSQL_ODBC PostgresSQL OpenResty OpenSearchStack DocumentServer DocumentServer.EE"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.PreReqSearchComponent">
|
||||
<ROW SearchKey="A918597FE054CCCB65ABDBA0AD8F63CSyst" Prereq="A918597FE054CCCB65ABDBA0AD8F63C" SearchType="0" SearchString="[SystemFolder]vcruntime140.dll" VerMin="14.26.28720" Order="2" Property="PreReqSearch_A918597FE054CCCB65ABDB"/>
|
||||
@ -1509,13 +1530,13 @@
|
||||
<ROW SearchKey="B96F93FA27E74B02866727AAE83982D0Rel" Prereq="B96F93FA27E74B02866727AAE83982D0" SearchType="9" SearchString="HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release" RefContent="G528048" Order="1" Property="PreReqSearch_B96F93FA27E74B02866727"/>
|
||||
<ROW SearchKey="C4FE6FD5B7C4D07B3A313E754A9A6A8Vers" Prereq="C4FE6FD5B7C4D07B3A313E754A9A6A8" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\14.0\RuntimeMinimum\Version" VerMin="14.26.28720" Order="1" Property="PreReqSearch_C4FE6FD5B7C4D07B3A313E"/>
|
||||
<ROW SearchKey="CA62D813A4E74FA2AAE86A7D7B7B1493Ver" Prereq="CA62D813A4E74FA2AAE86A7D7B7B1493" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum\Version" VerMin="12.0.40649" Order="1" Property="PreReqSearch_CA62D813A4E74FA2AAE86A"/>
|
||||
<ROW SearchKey="EA5B60A5CAD4115A8386D017CC889B9ASP.N" Prereq="EA5B60A5CAD4115A8386D017CC889B9" SearchType="1" SearchString="HKLM\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v7.0" VerMin="7.0.0" Order="1" Property="PreReqSearch_EA5B60A5CAD4115A8386D0"/>
|
||||
<ROW SearchKey="F3520F64DA5998338D97129FAD2Mic" Prereq="F3520F64DA5998338D97129FAD2" SearchType="12" SearchString="HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App" VerMin="7.0.0" Order="1" Property="PreReqSearch_F3520F64DA5998338D9712"/>
|
||||
<ROW SearchKey="EA5B60A5CAD4115A8386D017CC889B9ASP.N" Prereq="EA5B60A5CAD4115A8386D017CC889B9" SearchType="1" SearchString="HKLM\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v8.0" VerMin="8.0.0" Order="1" Property="PreReqSearch_EA5B60A5CAD4115A8386D0"/>
|
||||
<ROW SearchKey="F3520F64DA5998338D97129FAD2Mic" Prereq="F3520F64DA5998338D97129FAD2" SearchType="12" SearchString="HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App" VerMin="8.0.0" Order="1" Property="PreReqSearch_F3520F64DA5998338D9712"/>
|
||||
<ROW SearchKey="FFmpeg" Prereq="FFmpegx64" SearchType="4" SearchString="{384A74EC-865A-4907-8561-9DE765EE6E14}" Order="1" Property="PreReqSearch_3"/>
|
||||
<ROW SearchKey="ONLYOFFICEDocumentServer_is1" Prereq="DocumentServer" SearchType="5" SearchString="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ONLYOFFICE DocumentServer_is1" Order="1" Property="PreReqSearch_1_1" Platform="1"/>
|
||||
<ROW SearchKey="RabbitMQ_1" Prereq="RequiredApplication_5" SearchType="2" SearchString="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ\DisplayVersion" VerMin="3.12.1" Order="2" Property="PreReqSearch_9"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll" Prereq="RequiredApplication" SearchType="4" SearchString="{7AEDB3F3-7B9D-4FE2-8D8F-3CE3DE6F5B6B}" VerMin="8.0.33" Order="1" Property="PreReqSearch"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_1" Prereq="RequiredApplication_1" SearchType="4" SearchString="{47C07A3A-42EF-4213-A85D-8F5A59077C28}" VerMin="18.16.0" Order="1" Property="PreReqSearch_1"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_1" Prereq="RequiredApplication_1" SearchType="4" SearchString="{47C07A3A-42EF-4213-A85D-8F5A59077C28}" VerMin="20.11.1" Order="1" Property="PreReqSearch_1"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_10" Prereq="MicrosoftVisualC_2" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\14.0\RuntimeMinimum\Version" VerMin="14.26.28720" Order="1" Property="PreReqSearch_20"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_11" Prereq="ErlangOTP" SearchType="5" SearchString="HKLM\SOFTWARE\Wow6432Node\Ericsson\Erlang\14.0.2" Order="1" Property="PreReqSearch_24"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_12" Prereq="RabbitMQServer" SearchType="2" SearchString="HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ\DisplayVersion" VerMin="3.12.1" Order="1" Property="PreReqSearch_25"/>
|
||||
@ -1525,16 +1546,17 @@
|
||||
<ROW SearchKey="SystemFolderfile.dll_3" Prereq="OpenResty" SearchType="4" SearchString="{264FA774-91E5-4854-8010-4AB58CA830BD}" VerMin="1.21.4.2" Order="1" Property="PreReqSearch_8"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_4" Prereq="Certbot" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Certbot\DisplayVersion" VerMin="2.6.0" Order="1" Property="PreReqSearch_10"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_5" Prereq="Microsoft.NETFrame" SearchType="9" SearchString="HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release" RefContent="G528048" Order="1" Property="PreReqSearch_13"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_6" Prereq="Microsoft.NETRunti" SearchType="12" SearchString="HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App" VerMin="7.0.0" Order="1" Property="PreReqSearch_15"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_7" Prereq="MicrosoftASP.NETCo" SearchType="1" SearchString="HKLM\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v7.0" VerMin="7.0.0" Order="1" Property="PreReqSearch_16"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_6" Prereq="Microsoft.NETRunti" SearchType="12" SearchString="HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App" VerMin="8.0.0" Order="1" Property="PreReqSearch_15"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_7" Prereq="MicrosoftASP.NETCo" SearchType="1" SearchString="HKLM\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v8.0" VerMin="8.0.0" Order="1" Property="PreReqSearch_16"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_8" Prereq="MicrosoftVisualC" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum\Version" VerMin="12.0.40649" Order="1" Property="PreReqSearch_17"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_9" Prereq="MicrosoftVisualC_1" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\14.0\RuntimeMinimum\Version" VerMin="14.26.28720" Order="1" Property="PreReqSearch_18"/>
|
||||
<ROW SearchKey="SystemFoldervcruntime140.dll" Prereq="MicrosoftVisualC_1" SearchType="0" SearchString="[SystemFolder]vcruntime140.dll" VerMin="14.26.28720" Order="2" Property="PreReqSearch_19"/>
|
||||
<ROW SearchKey="UpgradeCode" Prereq="PostgreSQL_ODBC" SearchType="4" SearchString="{BBD29DF5-89F6-4B8B-BDC9-C3EA3A4AFDBB}" VerMin="15.0" Order="1" Property="PreReqSearch_14"/>
|
||||
<ROW SearchKey="UpgradeCode_1" Prereq="OpenSearchStack" SearchType="4" SearchString="{93CD82F0-18A5-4803-AC50-9A0021E92A56}" VerMin="1.0.0" Order="1" Property="PreReqSearch_7"/>
|
||||
<ROW SearchKey="UpgradeCode_2" Prereq="MySQLConnectorODBC" SearchType="4" SearchString="{7AEDB3F3-7B9D-4FE2-8D8F-3CE3DE6F5B6B}" VerMin="8.0.33" Order="1" Property="PreReqSearch_21"/>
|
||||
<ROW SearchKey="UpgradeCode_3" Prereq="RequiredApplication_6" SearchType="4" SearchString="{05410198-7212-4FC4-B7C8-AFEFC3DA0FBC}" VerMin="5.0.10" Order="2" Property="PreReqSearch_12"/>
|
||||
<ROW SearchKey="UpgradeCode_4" Prereq="MySQLInstallerCo" SearchType="4" SearchString="{18B94B70-06F1-4AC0-B308-37280DB868C2}" VerMin="1.6.6.0" Order="1" Property="PreReqSearch_22"/>
|
||||
<ROW SearchKey="UpgradeCode_5" Prereq="Node.js" SearchType="4" SearchString="{47C07A3A-42EF-4213-A85D-8F5A59077C28}" VerMin="18.16.0" Order="1" Property="PreReqSearch_23"/>
|
||||
<ROW SearchKey="UpgradeCode_5" Prereq="Node.js" SearchType="4" SearchString="{47C07A3A-42EF-4213-A85D-8F5A59077C28}" VerMin="20.11.1" Order="1" Property="PreReqSearch_23"/>
|
||||
<ROW SearchKey="UpgradeCode_6" Prereq="RedisonWindows" SearchType="4" SearchString="{05410198-7212-4FC4-B7C8-AFEFC3DA0FBC}" VerMin="5.0.10" Order="1" Property="PreReqSearch_26"/>
|
||||
<ROW SearchKey="UpgradeCode_7" Prereq="FFmpegEssentials" SearchType="4" SearchString="{384A74EC-865A-4907-8561-9DE765EE6E14}" Order="1" Property="PreReqSearch_27"/>
|
||||
<ROW SearchKey="UpgradeCode_8" Prereq="OpenSearch2.11.1" SearchType="4" SearchString="{F8561DF7-6238-4927-8DAC-AD0EBC117F6C}" VerMin="2.11.1" Order="1" Property="PreReqSearch_29"/>
|
||||
@ -1561,8 +1583,15 @@
|
||||
<ROW Name="ReplaceInclude" TxtUpdateSet="YourFile.txt" FindPattern="/etc/nginx/includes" ReplacePattern="includes" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceRoot" TxtUpdateSet="YourFile.txt_1" FindPattern="/var/www/client" ReplacePattern=""[APPDIR]client"" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceRoot" TxtUpdateSet="YourFile.txt_2" FindPattern="/var/www/public/" ReplacePattern=""[APPDIR]public/"" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceRoot" TxtUpdateSet="YourFile.txt_6" FindPattern="/var/www/management" ReplacePattern=""[APPDIR]management"" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceDsProxyPass" TxtUpdateSet="YourFile.txt" FindPattern="proxy_pass .*;" ReplacePattern="proxy_pass http://[DOCUMENT_SERVER_HOST]:[DOCUMENT_SERVER_PORT];" Options="19" Order="1" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceRouter" TxtUpdateSet="YourFile.txt_3" FindPattern="$router_host" ReplacePattern="127.0.0.1" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="Replace" TxtUpdateSet="fluentbit.conf" FindPattern="{APPDIR}" ReplacePattern="[APPDIR]" Options="2" Order="0" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceHost" TxtUpdateSet="fluentbit.conf" FindPattern="OPENSEARCH_HOST" ReplacePattern="[OPENSEARCH_HOST]" Options="2" Order="1" FileEncoding="-1"/>
|
||||
<ROW Name="ReplacePort" TxtUpdateSet="fluentbit.conf" FindPattern="OPENSEARCH_PORT" ReplacePattern="[OPENSEARCH_PORT]" Options="2" Order="2" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceScheme" TxtUpdateSet="fluentbit.conf" FindPattern="OPENSEARCH_SCHEME" ReplacePattern="[OPENSEARCH_SCHEME]" Options="2" Order="3" FileEncoding="-1"/>
|
||||
<ROW Name="ReplaceIndex" TxtUpdateSet="fluentbit.conf" FindPattern="OPENSEARCH_INDEX" ReplacePattern="[OPENSEARCH_INDEX]" Options="2" Order="4" FileEncoding="-1"/>
|
||||
<ROW Name="Append/Create" TxtUpdateSet="htpasswd_dashboards" FindPattern="onlyoffice:[DASHBOARDS_PWD]" Options="160" Order="0" FileEncoding="0"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.TxtUpdateSetComponent">
|
||||
<ROW Key="YourFile.txt" Component="conf" FileName="onlyoffice.conf" Directory="conf_Dir" Options="17"/>
|
||||
@ -1570,6 +1599,9 @@
|
||||
<ROW Key="YourFile.txt_2" Component="includes" FileName="onlyoffice-public.conf" Directory="includes_Dir" Options="17"/>
|
||||
<ROW Key="YourFile.txt_3" Component="conf" FileName="onlyoffice-proxy*" Directory="conf_Dir" Options="17"/>
|
||||
<ROW Key="YourFile.txt_5" Component="includes" FileName="letsencrypt.conf" Directory="includes_Dir" Options="17"/>
|
||||
<ROW Key="YourFile.txt_6" Component="conf" FileName="onlyoffice-management.conf" Directory="conf_Dir" Options="17"/>
|
||||
<ROW Key="fluentbit.conf" Component="config" FileName="fluent-bit.conf" Directory="config_Dir" Options="17"/>
|
||||
<ROW Key="htpasswd_dashboards" Component="conf" FileName=".htpasswd_dashboards" Directory="conf_Dir" Options="17"/>
|
||||
<ROW Key="xml" Component="tools" FileName="*.xml" Directory="tools_Dir" Options="17"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.XmlAttributeComponent">
|
||||
|
@ -5,15 +5,17 @@
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="AI_FINDEXE_TITLE" Value="Select the installation package for [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
|
||||
<ROW Property="ARPNOREPAIR" MultiBuildValue="DefaultBuild:1"/>
|
||||
<ROW Property="Manufacturer" Value="Ascensio System SIA"/>
|
||||
<ROW Property="PACKAGE_NAME" Value="[|ProductName]-[|ProductVersion]"/>
|
||||
<ROW Property="ProductCode" Value="1033:{5D3E60C0-55B7-4680-97C2-B52C4509753F} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
<ROW Property="ProductName" Value="OpenSearch"/>
|
||||
<ROW Property="ProductVersion" Value="2.11.1" Options="32"/>
|
||||
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>
|
||||
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/>
|
||||
<ROW Property="ServiceName_OpenSearch" Value="OpenSearch"/>
|
||||
<ROW Property="UpgradeCode" Value="{F8561DF7-6238-4927-8DAC-AD0EBC117F6C}"/>
|
||||
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
|
||||
@ -31,6 +33,7 @@
|
||||
<ROW Directory="tools_Dir" Directory_Parent="APPDIR" DefaultDir="tools"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="AI_ExePath" ComponentId="{85BC318D-6C05-454F-9A89-4B2AB8BD4C53}" Directory_="APPDIR" Attributes="4" KeyPath="AI_ExePath"/>
|
||||
<ROW Component="APPDIR" ComponentId="{D87E51BE-6C42-47EC-A172-D74909714645}" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Component="OpenSearch.exe" ComponentId="{AA41040E-4700-4321-A395-E927BC227A47}" Directory_="tools_Dir" Attributes="256" KeyPath="OpenSearch.exe"/>
|
||||
<ROW Component="OpenSearch.xml" ComponentId="{B61018A1-737F-4055-84D1-FC44D5C677A0}" Directory_="tools_Dir" Attributes="0" KeyPath="OpenSearch.xml" Type="0"/>
|
||||
@ -48,7 +51,7 @@
|
||||
<ROW BootstrOptKey="GlobalOptions" DownloadFolder="[AppDataFolder][|Manufacturer]\[|ProductName]\prerequisites" Options="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
||||
<ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="publish" PackageFileName="[|PACKAGE_NAME]" Languages="en" InstallationType="4" UseLargeSchema="true"/>
|
||||
<ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="publish" PackageFileName="[|PACKAGE_NAME]" Languages="en" InstallationType="2" CabsLocation="1" CompressCabs="false" UseLzma="true" LzmaMethod="2" LzmaCompressionLevel="4" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" UseLargeSchema="true"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
||||
<ROW Path="<AI_DICTS>ui.ail"/>
|
||||
@ -71,10 +74,20 @@
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiActionTextComponent">
|
||||
<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_ProcessFailActions" Description="Generating actions to configure service failure actions" DescriptionLocId="ActionText.Description.AI_ProcessFailActions" Template="Service: [1]" TemplateLocId="ActionText.Template.AI_ProcessFailActions"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiAppSearchComponent">
|
||||
<ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_LM" Builds="DefaultBuild"/>
|
||||
<ROW Property="AI_SETUPEXEPATH" Signature_="AI_EXE_PATH_CU" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
|
||||
<ROW Name="Prereq.dll" SourcePath="<AI_CUSTACTS>Prereq.dll"/>
|
||||
<ROW Name="aicustact.dll" SourcePath="<AI_CUSTACTS>aicustact.dll"/>
|
||||
<ROW Name="lzmaextractor.dll" SourcePath="<AI_CUSTACTS>lzmaextractor.dll"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||
@ -107,9 +120,18 @@
|
||||
<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="[~]"/>
|
||||
<ROW Action="AI_DATA_SETTER_1" Type="51" Source="CustomActionData" Target="[AI_SETUPEXEPATH]"/>
|
||||
<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"/>
|
||||
<ROW Action="AI_DeleteRCadLzma" Type="51" Source="AI_DeleteRLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_DeleteRLzma" Type="1281" Source="lzmaextractor.dll" Target="DeleteLZMAFiles"/>
|
||||
<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_ExtractCadLzma" Type="51" Source="AI_ExtractLzma" Target="[AI_SETUPEXEPATH]"/>
|
||||
<ROW Action="AI_ExtractFiles" Type="1" Source="Prereq.dll" Target="ExtractSourceFiles" AdditionalSeq="AI_DATA_SETTER_1"/>
|
||||
<ROW Action="AI_ExtractLzma" Type="1025" Source="lzmaextractor.dll" Target="ExtractLZMAFiles"/>
|
||||
<ROW Action="AI_FindExeLzma" Type="1" Source="lzmaextractor.dll" Target="FindEXE"/>
|
||||
<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_PRESERVE_INSTALL_TYPE" Type="65" Source="aicustact.dll" Target="PreserveInstallType"/>
|
||||
@ -129,6 +151,7 @@
|
||||
<ROW Feature_="MainFeature" Component_="ProductInformation"/>
|
||||
<ROW Feature_="MainFeature" Component_="OpenSearch.xml"/>
|
||||
<ROW Feature_="MainFeature" Component_="OpenSearch.exe"/>
|
||||
<ROW Feature_="MainFeature" Component_="AI_ExePath"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
|
||||
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel <> 5)" Sequence="210"/>
|
||||
@ -140,6 +163,17 @@
|
||||
<ROW Action="AI_ProcessFailActions" Sequence="5848"/>
|
||||
<ROW Action="AI_DATA_SETTER" Sequence="5847"/>
|
||||
<ROW Action="DisableElasticsearch" Condition="( NOT Installed AND NOT OLDPRODUCTS )" Sequence="6401"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="101" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_DeleteCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="199" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_DeleteRCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="198" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_ExtractCadLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="197" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_FindExeLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="196" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_ExtractLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="1549" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_DeleteRLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="1548" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_DeleteLzma" Condition="SETUPEXEDIR="" AND Installed AND (REMOVE<>"ALL") AND (AI_INSTALL_MODE<>"Remove") AND (NOT PATCH)" Sequence="6599" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_ExtractFiles" Sequence="1399" Builds="DefaultBuild"/>
|
||||
<ROW Action="AI_DATA_SETTER_1" Sequence="1398"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_PRESERVE_INSTALL_TYPE" Sequence="199"/>
|
||||
@ -156,10 +190,20 @@
|
||||
<ROW Condition="(VersionNT <> 500)" Description="[ProductName] cannot be installed on [WindowsTypeNT50Display]." DescriptionLocId="AI.LaunchCondition.NoNT50" 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"/>
|
||||
<ROW Signature_="AI_EXE_PATH_LM" Root="2" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Type="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
|
||||
<ROW Registry="AI_ExePath" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="AI_ExePath" Value="[AI_SETUPEXEPATH]" Component_="AI_ExePath"/>
|
||||
<ROW Registry="AdvancedInstaller" Root="-1" Key="Software\Caphyon\Advanced Installer" Name="\"/>
|
||||
<ROW Registry="Caphyon" Root="-1" Key="Software\Caphyon" Name="\"/>
|
||||
<ROW Registry="LZMA" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA" Name="\"/>
|
||||
<ROW Registry="Manufacturer" Root="-1" Key="Software\[Manufacturer]" Name="\"/>
|
||||
<ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
|
||||
<ROW Registry="ProductCode" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]" Name="\"/>
|
||||
<ROW Registry="ProductName" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="\"/>
|
||||
<ROW Registry="ProductVersion" Root="-1" Key="Software\Caphyon\Advanced Installer\LZMA\[ProductCode]\[ProductVersion]" Name="\"/>
|
||||
<ROW Registry="Software" Root="-1" Key="Software" Name="\"/>
|
||||
<ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
|
||||
</COMPONENT>
|
||||
|
234
install/win/OpenSearchStack.aip
Normal file
234
install/win/OpenSearchStack.aip
Normal file
@ -0,0 +1,234 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DOCUMENT Type="Advanced Installer" CreateVersion="20.7.1" version="20.7.1" Modules="enterprise" RootPath="." Language="en" Id="{8675EE16-F689-45A4-A9B4-47F4B5A57C14}">
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.ProjectOptionsComponent">
|
||||
<ROW Name="HiddenItems" Value="AppXProductDetailsComponent;AppXDependenciesComponent;AppXAppDetailsComponent;AppXVisualAssetsComponent;AppXCapabilitiesComponent;AppXAppDeclarationsComponent;AppXUriRulesComponent;SccmComponent;ActSyncAppComponent;CPLAppletComponent;AutorunComponent;GameUxComponent;SilverlightSlnComponent;SharePointSlnComponent;FixupComponent;MsiXDiffComponent;MsixManifestEditorComponent"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
|
||||
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
|
||||
<ROW Property="MSIFASTINSTALL" MultiBuildValue="DefaultBuild:3"/>
|
||||
<ROW Property="Manufacturer" Value="Ascensio System SIA"/>
|
||||
<ROW Property="MsiLogging" MultiBuildValue="DefaultBuild:vp"/>
|
||||
<ROW Property="ProductCode" Value="1033:{9705A0E0-DF9C-4B0B-B6D9-7A2FB97C4DA9} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
<ROW Property="ProductName" Value="OpenSearchStack"/>
|
||||
<ROW Property="ProductVersion" Value="1.0.0" Options="32"/>
|
||||
<ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>
|
||||
<ROW Property="UpgradeCode" Value="{93CD82F0-18A5-4803-AC50-9A0021E92A56}"/>
|
||||
<ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
|
||||
<ROW Property="WindowsType9XDisplay" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT40" MultiBuildValue="DefaultBuild:Windows NT 4.0" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT40Display" MultiBuildValue="DefaultBuild:Windows NT 4.0" ValueLocId="-"/>
|
||||
<ROW Property="WindowsTypeNT50" MultiBuildValue="DefaultBuild:Windows 2000" ValueLocId="-"/>
|
||||
<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="-"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
|
||||
<ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>
|
||||
<ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
|
||||
<ROW Component="APPDIR" ComponentId="{A9D710AE-1F08-48CB-BE89-3C028ECC4714}" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Component="ProductInformation" ComponentId="{66125B7F-2A78-4EA0-906F-ACB892BC3BC8}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
|
||||
<ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ATTRIBUTE name="CurrentFeature" value="MainFeature"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
|
||||
<ROW RemoveFile="_" Options="3"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
|
||||
<ROW BootstrOptKey="GlobalOptions" DownloadFolder="[AppDataFolder][|Manufacturer]\[|ProductName]\prerequisites" Options="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
|
||||
<ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="publish" Languages="en" InstallationType="4" UseLargeSchema="true" UACExecutionLevel="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
|
||||
<ROW Path="<AI_DICTS>ui.ail"/>
|
||||
<ROW Path="<AI_DICTS>ui_en.ail"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.ExpandArchiveComponent">
|
||||
<ROW ExpandArchive="ExpandArchive" DestFolder="APPDIR" SourcePath="[APPDIR]opensearch-dashboards-2.11.1-windows-x64.zip" Flags="57"/>
|
||||
<ROW ExpandArchive="ExpandArchive_1" DestFolder="APPDIR" SourcePath="[APPDIR]fluent-bit-2.2.2-win64.zip" Flags="57"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.FileDownloadComponent">
|
||||
<ROW FileDownload="fluentbit2.2.2win64.zip" FileName="FLUENT~1.ZIP|fluent-bit-2.2.2-win64.zip" DirProperty="APPDIR" Source="https://packages.fluentbit.io/windows/fluent-bit-2.2.2-win64.zip" ExactSize="30001957" MD5="6c5b495aa2f55f41182841792a4cfa28" Flags="57"/>
|
||||
<ROW FileDownload="opensearchdashboards2.11.1windowsx6" FileName="OPENSE~1.ZIP|opensearch-dashboards-2.11.1-windows-x64.zip" DirProperty="APPDIR" Source="https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.11.1/opensearch-dashboards-2.11.1-windows-x64.zip" ExactSize="370856962" MD5="ea88b808fce5154e76b0b082bca97833" Flags="41"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
|
||||
<ROW Fragment="CommonUI.aip" Path="<AI_FRAGS>CommonUI.aip"/>
|
||||
<ROW Fragment="FolderDlg.aip" Path="<AI_THEMES>classic\fragments\FolderDlg.aip"/>
|
||||
<ROW Fragment="MaintenanceTypeDlg.aip" Path="<AI_THEMES>classic\fragments\MaintenanceTypeDlg.aip"/>
|
||||
<ROW Fragment="MaintenanceWelcomeDlg.aip" Path="<AI_THEMES>classic\fragments\MaintenanceWelcomeDlg.aip"/>
|
||||
<ROW Fragment="SequenceDialogs.aip" Path="<AI_THEMES>classic\fragments\SequenceDialogs.aip"/>
|
||||
<ROW Fragment="Sequences.aip" Path="<AI_FRAGS>Sequences.aip"/>
|
||||
<ROW Fragment="StaticUIStrings.aip" Path="<AI_FRAGS>StaticUIStrings.aip"/>
|
||||
<ROW Fragment="Themes.aip" Path="<AI_FRAGS>Themes.aip"/>
|
||||
<ROW Fragment="UI.aip" Path="<AI_THEMES>classic\fragments\UI.aip"/>
|
||||
<ROW Fragment="Validation.aip" Path="<AI_FRAGS>Validation.aip"/>
|
||||
<ROW Fragment="VerifyRemoveDlg.aip" Path="<AI_THEMES>classic\fragments\VerifyRemoveDlg.aip"/>
|
||||
<ROW Fragment="VerifyRepairDlg.aip" Path="<AI_THEMES>classic\fragments\VerifyRepairDlg.aip"/>
|
||||
<ROW Fragment="WelcomeDlg.aip" Path="<AI_THEMES>classic\fragments\WelcomeDlg.aip"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiActionTextComponent">
|
||||
<ROW Action="AI_AiRemoveFilesCommit" Description="Executing file removal operations" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesCommit" Template="Executing file removal: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesCommit"/>
|
||||
<ROW Action="AI_AiRemoveFilesCommit_Impersonate" Description="Executing file removal operations" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesCommit" Template="Executing file removal: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesCommit"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Permanent" Description="Preparing files for removal" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesDeferred_Permanent" Template="Preparing file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesDeferred_Permanent"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Permanent_Impersonate" Description="Preparing files for removal" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesDeferred_Permanent" Template="Preparing file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesDeferred_Permanent"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Undoable" Description="Preparing files for removal" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesDeferred_Undoable" Template="Preparing file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesDeferred_Undoable"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Undoable_Impersonate" Description="Preparing files for removal" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesDeferred_Undoable" Template="Preparing file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesDeferred_Undoable"/>
|
||||
<ROW Action="AI_AiRemoveFilesImmediate" Description="Preparing files for removal" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesImmediate" Template="Preparing file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesImmediate"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootDeferred" Description="ActionText.Description.AI_AiRemoveFilesRebootDeferred" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesRebootDeferred"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootImmediate" Description="ActionText.Description.AI_AiRemoveFilesRebootImmediate" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesRebootImmediate"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootRollback" Description="ActionText.Description.AI_AiRemoveFilesRebootRollback" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesRebootRollback"/>
|
||||
<ROW Action="AI_AiRemoveFilesRollback" Description="Restoring removed files" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesRollback" Template="Restoring file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesRollback"/>
|
||||
<ROW Action="AI_AiRemoveFilesRollback_Impersonate" Description="Restoring removed files" DescriptionLocId="ActionText.Description.AI_AiRemoveFilesRollback" Template="Restoring file: [1]" TemplateLocId="ActionText.Template.AI_AiRemoveFilesRollback"/>
|
||||
<ROW Action="AI_ExpandArchConfig" Description="Extracting archives" DescriptionLocId="ActionText.Description.AI_ExpandArchConfig" Template="Extracting archive: "[1]"" TemplateLocId="ActionText.Template.AI_ExpandArchConfig"/>
|
||||
<ROW Action="AI_ExpandArchInstall" Description="Generating actions for extracting archives" DescriptionLocId="ActionText.Description.AI_ExpandArchInstall"/>
|
||||
<ROW Action="AI_ExpandArchRemove" Description="Cleanup extracted files" DescriptionLocId="ActionText.Description.AI_ExpandArchRemove" Template="Removing contents of extracted archive: "[1]"" TemplateLocId="ActionText.Template.AI_ExpandArchRemove"/>
|
||||
<ROW Action="AI_ExpandArchRollback" Description="Rolling back extracted files" DescriptionLocId="ActionText.Description.AI_ExpandArchRollback" Template="Rolling back contents of extracted archive: "[1]"" TemplateLocId="ActionText.Template.AI_ExpandArchRollback"/>
|
||||
<ROW Action="AI_ExpandArchUninstall" Description="Generating actions for extracting archives" DescriptionLocId="ActionText.Description.AI_ExpandArchUninstall"/>
|
||||
<ROW Action="AI_FdConfig" Description="Downloading files" DescriptionLocId="ActionText.Description.AI_FdConfig" Template="Downloading file: "[1]"" TemplateLocId="ActionText.Template.AI_FdConfig"/>
|
||||
<ROW Action="AI_FdInstall" Description="Generating actions for file download operations" DescriptionLocId="ActionText.Description.AI_FdInstall"/>
|
||||
<ROW Action="AI_FdRemove" Description="Cleanup downloaded files" DescriptionLocId="ActionText.Description.AI_FdRemove" Template="Removing downloaded file: "[1]"" TemplateLocId="ActionText.Template.AI_FdRemove"/>
|
||||
<ROW Action="AI_FdRollback" Description="Rolling back downloaded files" DescriptionLocId="ActionText.Description.AI_FdRollback" Template="Rolling back downloaded file: "[1]"" TemplateLocId="ActionText.Template.AI_FdRollback"/>
|
||||
<ROW Action="AI_FdUninstall" Description="Generating actions for file download operations" DescriptionLocId="ActionText.Description.AI_FdUninstall"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
|
||||
<ROW Name="FileOperations.dll" SourcePath="<AI_CUSTACTS>FileOperations.dll"/>
|
||||
<ROW Name="ResourceCleaner.dll" SourcePath="<AI_CUSTACTS>ResourceCleaner.dll"/>
|
||||
<ROW Name="aicustact.dll" SourcePath="<AI_CUSTACTS>aicustact.dll"/>
|
||||
<ROW Name="utils.vbs" SourcePath="utils.vbs"/>
|
||||
<ROW Name="viewer.exe" SourcePath="<AI_CUSTACTS>viewer.exe" DigSign="true"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
|
||||
<ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
|
||||
<ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL" Ordering="201"/>
|
||||
<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="FolderDlg" Condition="AI_INSTALL" Ordering="201"/>
|
||||
<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"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_MAINT" Ordering="198"/>
|
||||
<ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="202"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="ChangeButton" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="501"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceWelcomeDlg" Condition="AI_MAINT" Ordering="1"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="RemoveButton" Event="NewDialog" Argument="VerifyRemoveDlg" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="601"/>
|
||||
<ROW Dialog_="VerifyRemoveDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="1"/>
|
||||
<ROW Dialog_="MaintenanceTypeDlg" Control_="RepairButton" Event="NewDialog" Argument="VerifyRepairDlg" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="601"/>
|
||||
<ROW Dialog_="VerifyRepairDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="1"/>
|
||||
<ROW Dialog_="VerifyRepairDlg" Control_="Repair" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode="Repair"" Ordering="399" Options="1"/>
|
||||
<ROW Dialog_="VerifyRemoveDlg" Control_="Remove" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode="Remove"" Ordering="299" Options="1"/>
|
||||
<ROW Dialog_="PatchWelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_PATCH" Ordering="201"/>
|
||||
<ROW Dialog_="ResumeDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_RESUME" Ordering="299"/>
|
||||
<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="203"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
|
||||
<ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
|
||||
<ROW Action="AI_AiRemoveFilesCommit" Type="11777" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesCommit" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesCommit_Impersonate" Type="9729" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesCommitImpersonate" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Permanent" Type="11265" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesPermanent" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Permanent_Impersonate" Type="9217" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesPermanentImpersonate" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Undoable" Type="11265" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesUndoable" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesDeferred_Undoable_Impersonate" Type="9217" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesUndoableImpersonate" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesImmediate" Type="1" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesImmediate"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootDeferred" Type="11265" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesRebootDeferred" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootImmediate" Type="1" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesRebootImmediate"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootRollback" Type="11521" Source="ResourceCleaner.dll" Target="OnAiRemoveFilesRebootRollback" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesRollback" Type="11521" Source="ResourceCleaner.dll" Target="OnAiUndoRemoveFiles" WithoutSeq="true"/>
|
||||
<ROW Action="AI_AiRemoveFilesRollback_Impersonate" Type="9473" Source="ResourceCleaner.dll" Target="OnAiUndoRemoveFilesImpersonate" WithoutSeq="true"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/>
|
||||
<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_ExpandArchConfig" Type="11265" Source="FileOperations.dll" Target="OnExpandArchConfig" WithoutSeq="true"/>
|
||||
<ROW Action="AI_ExpandArchInstall" Type="1" Source="FileOperations.dll" Target="OnExpandArchInstall"/>
|
||||
<ROW Action="AI_ExpandArchRemove" Type="11265" Source="FileOperations.dll" Target="OnExpandArchRemove" WithoutSeq="true"/>
|
||||
<ROW Action="AI_ExpandArchRollback" Type="11521" Source="FileOperations.dll" Target="OnExpandArchRollback" WithoutSeq="true"/>
|
||||
<ROW Action="AI_ExpandArchUninstall" Type="1" Source="FileOperations.dll" Target="OnExpandArchUninstall"/>
|
||||
<ROW Action="AI_FdConfig" Type="11265" Source="FileOperations.dll" Target="OnFdConfig" WithoutSeq="true"/>
|
||||
<ROW Action="AI_FdInstall" Type="1" Source="FileOperations.dll" Target="OnFdInstall"/>
|
||||
<ROW Action="AI_FdRemove" Type="11265" Source="FileOperations.dll" Target="OnFdRemove" WithoutSeq="true"/>
|
||||
<ROW Action="AI_FdRollback" Type="11521" Source="FileOperations.dll" Target="OnFdRollback" WithoutSeq="true"/>
|
||||
<ROW Action="AI_FdUninstall" Type="1" Source="FileOperations.dll" Target="OnFdUninstall"/>
|
||||
<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_PRESERVE_INSTALL_TYPE" Type="65" Source="aicustact.dll" Target="PreserveInstallType"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH" Target="[AI_SETUPEXEPATH_ORIGINAL]"/>
|
||||
<ROW Action="AI_RESTORE_LOCATION" Type="65" Source="aicustact.dll" Target="RestoreLocation"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Type="1" Source="aicustact.dll" Target="AI_ResolveKnownFolders"/>
|
||||
<ROW Action="AI_RestartElevated" Type="1" Source="aicustact.dll" Target="RestartElevated"/>
|
||||
<ROW Action="AI_SHOW_LOG" Type="65" Source="aicustact.dll" Target="LaunchLogFile" WithoutSeq="true"/>
|
||||
<ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>
|
||||
<ROW Action="OpenSearchStackSetup" Type="4102" Source="utils.vbs" Target="OpenSearchStackSetup"/>
|
||||
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[WindowsVolume]\[ProductName]"/>
|
||||
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
|
||||
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiFeatCompsComponent">
|
||||
<ROW Feature_="MainFeature" Component_="APPDIR"/>
|
||||
<ROW Feature_="MainFeature" Component_="ProductInformation"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
|
||||
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel <> 5)" Sequence="210"/>
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
<ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1501"/>
|
||||
<ROW Action="AI_PREPARE_UPGRADE" Condition="AI_UPGRADE="No" AND (Not Installed)" Sequence="1397"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
|
||||
<ROW Action="AI_EnableDebugLog" Sequence="51"/>
|
||||
<ROW Action="AI_FdInstall" Condition="(VersionNT >= 501) AND (REMOVE <> "ALL")" Sequence="5799"/>
|
||||
<ROW Action="AI_FdUninstall" Condition="(VersionNT >= 501) AND (REMOVE="ALL")" Sequence="1702"/>
|
||||
<ROW Action="AI_ExpandArchInstall" Condition="(VersionNT >= 501) AND (REMOVE <> "ALL")" Sequence="5851"/>
|
||||
<ROW Action="AI_ExpandArchUninstall" Condition="(VersionNT >= 501) AND (REMOVE="ALL")" Sequence="1701"/>
|
||||
<ROW Action="OpenSearchStackSetup" Condition="( NOT Installed )" Sequence="6601"/>
|
||||
<ROW Action="AI_AiRemoveFilesImmediate" Sequence="3498"/>
|
||||
<ROW Action="AI_AiRemoveFilesRebootImmediate" Sequence="3499"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
|
||||
<ROW Action="AI_PRESERVE_INSTALL_TYPE" Sequence="199"/>
|
||||
<ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=""" Sequence="749"/>
|
||||
<ROW Action="AI_ResolveKnownFolders" Sequence="54"/>
|
||||
<ROW Action="AI_DpiContentScale" Sequence="53"/>
|
||||
<ROW Action="AI_EnableDebugLog" Sequence="52"/>
|
||||
<ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Sequence="99"/>
|
||||
<ROW Action="AI_RESTORE_AI_SETUPEXEPATH" Condition="AI_SETUPEXEPATH_ORIGINAL" Sequence="101"/>
|
||||
<ROW Action="AI_RestartElevated" Sequence="51" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
|
||||
<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="VersionNT" Description="[ProductName] cannot be installed on [WindowsType9XDisplay]." DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
|
||||
<ROW Registry="Manufacturer" Root="-1" Key="Software\[Manufacturer]" Name="\"/>
|
||||
<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="Software" Root="-1" Key="Software" Name="\"/>
|
||||
<ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiRemoveFileComponent">
|
||||
<ROW FileKey="_" Component_="APPDIR" DirProperty="APPDIR" InstallMode="2"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiServCtrlComponent">
|
||||
<ROW ServiceControl="ServiceName" Name="OpenSearchDashboards" Event="160" Wait="1" Component_="APPDIR"/>
|
||||
<ROW ServiceControl="ServiceName_1" Name="Fluent-Bit" Event="160" Wait="1" Component_="APPDIR"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiThemeComponent">
|
||||
<ATTRIBUTE name="UsedTheme" value="classic"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiUpgradeComponent">
|
||||
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="0.0.1" VersionMax="[|ProductVersion]" Attributes="257" ActionProperty="OLDPRODUCTS"/>
|
||||
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.SynchronizedFolderComponent">
|
||||
<ROW Directory_="APPDIR" SourcePath="OpenSearchStack" Feature="MainFeature" ExcludePattern="*~|#*#|%*%|._|CVS|.cvsignore|SCCS|vssver.scc|mssccprj.scc|vssver2.scc|.svn|.DS_Store" ExcludeFlags="6" FileAddOptions="4"/>
|
||||
</COMPONENT>
|
||||
</DOCUMENT>
|
@ -6,6 +6,7 @@ set "opensearch_version=2.11.1"
|
||||
|
||||
REM echo ######## Extracting and preparing files to build ########
|
||||
%sevenzip% x buildtools\install\win\opensearch-%opensearch_version%.zip -o"buildtools\install\win" -y
|
||||
%sevenzip% x buildtools\install\win\ingest-attachment-%opensearch_version%.zip -o"buildtools\install\win\OpenSearch\plugins\ingest-attachment" -y
|
||||
xcopy "buildtools\install\win\opensearch-%opensearch_version%\plugins\opensearch-security" "buildtools\install\win\OpenSearch\plugins\opensearch-security" /s /y /b /i
|
||||
xcopy "buildtools\install\win\opensearch-%opensearch_version%\plugins\opensearch-job-scheduler" "buildtools\install\win\OpenSearch\plugins\opensearch-job-scheduler" /s /y /b /i
|
||||
xcopy "buildtools\install\win\opensearch-%opensearch_version%\plugins\opensearch-index-management" "buildtools\install\win\OpenSearch\plugins\opensearch-index-management" /s /y /b /i
|
||||
@ -14,6 +15,7 @@ xcopy "buildtools\install\win\opensearch-%opensearch_version%" "buildtools\insta
|
||||
rmdir buildtools\install\win\opensearch-%opensearch_version% /s /q
|
||||
md buildtools\install\win\OpenSearch\tools
|
||||
md buildtools\install\win\OpenResty\tools
|
||||
md buildtools\install\win\OpenSearchStack\tools
|
||||
md buildtools\install\win\Files\tools
|
||||
md buildtools\install\win\Files\Logs
|
||||
md buildtools\install\win\Files\Data
|
||||
@ -41,19 +43,31 @@ copy buildtools\install\win\WinSW3.0.0.exe "buildtools\install\win\Files\tools\L
|
||||
copy buildtools\install\win\tools\Login.xml "buildtools\install\win\Files\tools\Login.xml" /y
|
||||
copy buildtools\install\win\WinSW3.0.0.exe "buildtools\install\win\OpenSearch\tools\OpenSearch.exe" /y
|
||||
copy buildtools\install\win\tools\OpenSearch.xml "buildtools\install\win\OpenSearch\tools\OpenSearch.xml" /y
|
||||
copy buildtools\install\win\WinSW3.0.0.exe "buildtools\install\win\OpenSearchStack\tools\OpenSearchDashboards.exe" /y
|
||||
copy buildtools\install\win\tools\OpenSearchDashboards.xml "buildtools\install\win\OpenSearchStack\tools\OpenSearchDashboards.xml" /y
|
||||
copy "buildtools\install\win\nginx.conf" "buildtools\install\win\Files\nginx\conf\nginx.conf" /y
|
||||
copy "buildtools\install\docker\config\nginx\onlyoffice-proxy.conf" "buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf" /y
|
||||
copy "buildtools\install\docker\config\nginx\onlyoffice-proxy.conf" "buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl" /y
|
||||
copy "buildtools\install\docker\config\nginx\onlyoffice-proxy-ssl.conf" "buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl" /y
|
||||
copy "buildtools\install\docker\config\nginx\letsencrypt.conf" "buildtools\install\win\Files\nginx\conf\includes\letsencrypt.conf" /y
|
||||
copy "buildtools\install\win\sbin\docspace-ssl-setup.ps1" "buildtools\install\win\Files\sbin\docspace-ssl-setup.ps1" /y
|
||||
copy "buildtools\install\docker\config\fluent-bit.conf" "buildtools\install\win\Files\config\fluent-bit.conf" /y
|
||||
rmdir buildtools\install\win\publish /s /q
|
||||
|
||||
REM echo ######## SSL configs ########
|
||||
%sed% -i "s/the_host/host/g" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl
|
||||
%sed% -i "s/the_scheme/scheme/g" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl
|
||||
%sed% -i "s/this_host\|proxy_x_forwarded_host/host/g" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl
|
||||
%sed% -i "s/proxy_x_forwarded_port/server_port/g" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl
|
||||
%sed% -i "s/proxy_x_forwarded_proto/scheme/g" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf buildtools\install\win\Files\nginx\conf\onlyoffice-proxy.conf.tmpl buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl
|
||||
%sed% -i "s/ssl_dhparam \/etc\/ssl\/certs\/dhparam.pem;/#ssl_dhparam \/etc\/ssl\/certs\/dhparam.pem;/" buildtools\install\win\Files\nginx\conf\onlyoffice-proxy-ssl.conf.tmpl
|
||||
%sed% -i "s_\(.*root\).*;_\1 \"{APPDIR}letsencrypt\";_g" -i buildtools\install\win\Files\nginx\conf\includes\letsencrypt.conf
|
||||
%sed% -i "s#/etc/nginx/html#conf/html#g" buildtools\install\win\Files\nginx\conf\onlyoffice.conf
|
||||
%sed% -i "s/\/etc\/nginx\/\.htpasswd_dashboards/\.htpasswd_dashboards/g" buildtools\install\win\Files\nginx\conf\onlyoffice.conf
|
||||
|
||||
REM echo ######## Configure fluent-bit config for windows ########
|
||||
%sed% -i "s/forward/tail/" buildtools\install\win\Files\config\fluent-bit.conf
|
||||
%sed% -i "s/Port/Path/" buildtools\install\win\Files\config\fluent-bit.conf
|
||||
%sed% -i "s/24224/{APPDIR}Logs\*.log/" buildtools\install\win\Files\config\fluent-bit.conf
|
||||
%sed% -i "/Listen\s*127\.0\.0\.1/d" buildtools\install\win\Files\config\fluent-bit.conf
|
||||
|
||||
REM echo ######## Delete test and dev configs ########
|
||||
del /f /q buildtools\install\win\Files\config\*.test.json
|
||||
@ -116,6 +130,13 @@ IF "%SignBuild%"=="true" (
|
||||
)
|
||||
%AdvancedInstaller% /rebuild buildtools\install\win\OpenSearch.aip
|
||||
|
||||
REM echo ######## Build OpenSearchStack ########
|
||||
IF "%SignBuild%"=="true" (
|
||||
%AdvancedInstaller% /edit buildtools\install\win\OpenSearchStack.aip /SetSig
|
||||
%AdvancedInstaller% /edit buildtools\install\win\OpenSearchStack.aip /SetDigitalCertificateFile -file %onlyoffice_codesign_path% -password "%onlyoffice_codesign_password%"
|
||||
)
|
||||
%AdvancedInstaller% /rebuild buildtools\install\win\OpenSearchStack.aip
|
||||
|
||||
REM echo ######## Build DocSpace package ########
|
||||
%AdvancedInstaller% /edit buildtools\install\win\DocSpace.aip /SetVersion %BUILD_VERSION%.%BUILD_NUMBER%
|
||||
|
||||
|
@ -61,6 +61,12 @@ $prerequisites = @(
|
||||
link = "https://artifacts.opensearch.org/releases/bundle/opensearch/${opensearch_version}/opensearch-${opensearch_version}-windows-x64.zip";
|
||||
}
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "ingest-attachment-${opensearch_version}.zip";
|
||||
link = "https://artifacts.opensearch.org/releases/plugins/ingest-attachment/${opensearch_version}/ingest-attachment-${opensearch_version}.zip";
|
||||
}
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "WinSW.NET4new.exe";
|
||||
@ -115,14 +121,14 @@ $enterprise_prerequisites = @(
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "aspnetcore-runtime-7.0.4-win-x64.exe";
|
||||
link = "https://download.visualstudio.microsoft.com/download/pr/1c260404-69d2-4c07-979c-644846ba1f46/7d27639ac67f1e502b83a738406da0ee/aspnetcore-runtime-7.0.4-win-x64.exe";
|
||||
name = "aspnetcore-runtime-8.0.2-win-x64.exe";
|
||||
link = "https://download.visualstudio.microsoft.com/download/pr/34d3e426-9f3c-45a6-8496-f21b3adbbf5f/475aec17378cc8ab0fcfe535e84698f9/aspnetcore-runtime-8.0.2-win-x64.exe";
|
||||
}
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "dotnet-runtime-7.0.4-win-x64.exe";
|
||||
link = "https://download.visualstudio.microsoft.com/download/pr/7e842a78-9877-4b82-8450-f3311b406a6f/83352282a0bdf1e5f9dfc5fcc88dc83f/dotnet-runtime-7.0.4-win-x64.exe";
|
||||
name = "dotnet-runtime-8.0.2-win-x64.exe";
|
||||
link = "https://download.visualstudio.microsoft.com/download/pr/a4bc7333-6e30-4e2d-b300-0b4f23537e5b/4b81af6d46a02fba5d9ce030af438c67/dotnet-runtime-8.0.2-win-x64.exe";
|
||||
}
|
||||
|
||||
@{
|
||||
@ -157,8 +163,8 @@ $enterprise_prerequisites = @(
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "node-v18.16.1-x64.msi";
|
||||
link = "https://nodejs.org/dist/v18.16.1/node-v18.16.1-x64.msi";
|
||||
name = "node-v20.11.1-x64.msi";
|
||||
link = "https://nodejs.org/dist/v20.11.1/node-v20.11.1-x64.msi";
|
||||
}
|
||||
|
||||
@{
|
||||
|
@ -17,6 +17,8 @@ if defined SecondArg (
|
||||
)
|
||||
|
||||
xcopy "%PathToRepository%\publish\web\public" "%PathToAppFolder%\public" /s /y /b /i
|
||||
xcopy "%PathToRepository%\campaigns\src\campaigns" "%PathToAppFolder%\public\campaigns" /s /y /b /i
|
||||
xcopy "%PathToRepository%\publish\web\management" "%PathToAppFolder%\management" /s /y /b /i
|
||||
xcopy "%PathToRepository%\publish\web\client" "%PathToAppFolder%\client" /s /y /b /i
|
||||
xcopy "%PathToRepository%\buildtools\config\nginx" "%PathToAppFolder%\nginx\conf" /s /y /b /i
|
||||
xcopy "%PathToRepository%\buildtools\config\*" "%PathToAppFolder%\config" /y /b /i
|
||||
|
@ -84,7 +84,11 @@ if ( $args.Count -ge 2 )
|
||||
|
||||
$day = (Get-Date -Format "dddd").ToUpper().SubString(0, 3)
|
||||
$time = Get-Date -Format "HH:mm"
|
||||
cmd.exe /c "SCHTASKS /F /CREATE /SC WEEKLY /D $day /TN `"Certbot renew`" /TR `"${app}\letsencrypt\letsencrypt_cron.bat`" /ST $time"
|
||||
$taskName = "Certbot renew"
|
||||
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c `"${app}\letsencrypt\letsencrypt_cron.bat`""
|
||||
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek $day -At $time
|
||||
|
||||
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Force
|
||||
}
|
||||
|
||||
elseif ($args[0] -eq "-d" -or $args[0] -eq "--default") {
|
||||
|
16
install/win/tools/OpenSearchDashboards.xml
Normal file
16
install/win/tools/OpenSearchDashboards.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<service>
|
||||
<id>OpenSearchDashboards</id>
|
||||
<name>OpenSearchDashboards</name>
|
||||
<description>OpenSearchDashboards</description>
|
||||
<priority>RealTime</priority>
|
||||
<startmode>Automatic</startmode>
|
||||
<delayedAutoStart>true</delayedAutoStart>
|
||||
<onfailure action="restart" delay="1 sec"/>
|
||||
<logpath>%BASE%\..\Log\</logpath>
|
||||
<workingdirectory>%BASE%\..\</workingdirectory>
|
||||
<executable>%BASE%\..\bin\opensearch-dashboards.bat</executable>
|
||||
<log mode="roll-by-size">
|
||||
<sizeThreshold>10240</sizeThreshold>
|
||||
<keepFiles>8</keepFiles>
|
||||
</log>
|
||||
</service>
|
@ -118,6 +118,13 @@ Function SetDocumentServerJWTSecretProp
|
||||
|
||||
End Function
|
||||
|
||||
Function SetDashboardsPwd
|
||||
On Error Resume Next
|
||||
|
||||
Session.Property("DASHBOARDS_PWD") = RandomString( 20 )
|
||||
|
||||
End Function
|
||||
|
||||
Function SetMACHINEKEY
|
||||
On Error Resume Next
|
||||
|
||||
@ -246,7 +253,7 @@ Function OpenSearchSetup
|
||||
On Error Resume Next
|
||||
|
||||
Dim ShellCommand
|
||||
Dim APP_INDEX_DIR
|
||||
Dim APP_INDEX_DIR, OPENSEARCH_DASHBOARDS_YML
|
||||
|
||||
Const ForReading = 1
|
||||
Const ForWriting = 2
|
||||
@ -255,6 +262,8 @@ Function OpenSearchSetup
|
||||
Set objFSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
APP_INDEX_DIR = Session.Property("APPDIR") & "Data\Index\v2.11.1\"
|
||||
|
||||
OPENSEARCH_DASHBOARDS_YML = "C:\OpenSearchStack\opensearch-dashboards-2.11.1\config\opensearch_dashboards.yml"
|
||||
|
||||
If Not fso.FolderExists(APP_INDEX_DIR) Then
|
||||
Session.Property("NEED_REINDEX_OPENSEARCH") = "TRUE"
|
||||
@ -370,7 +379,48 @@ Function OpenSearchSetup
|
||||
objFile.WriteLine fileContent
|
||||
|
||||
objFile.Close
|
||||
|
||||
|
||||
If objFSO.FileExists(OPENSEARCH_DASHBOARDS_YML) Then
|
||||
Set objFile = objFSO.OpenTextFile(OPENSEARCH_DASHBOARDS_YML, ForWriting)
|
||||
objFile.WriteLine ""
|
||||
objFile.Close
|
||||
Else
|
||||
WScript.Echo "File doesn't exist: " & OPENSEARCH_DASHBOARDS_YML
|
||||
End If
|
||||
|
||||
Set objFile = objFSO.OpenTextFile(OPENSEARCH_DASHBOARDS_YML, ForReading)
|
||||
|
||||
fileContent = objFile.ReadAll
|
||||
|
||||
objFile.Close
|
||||
|
||||
If InStrRev(fileContent, "opensearch.hosts") = 0 Then
|
||||
fileContent = fileContent & Chr(13) & Chr(10) & "opensearch.hosts: [http://localhost:9200]"
|
||||
Else
|
||||
oRE.Pattern = "opensearch.hosts:.*"
|
||||
fileContent = oRE.Replace(fileContent, "opensearch.hosts: [http://localhost:9200]")
|
||||
End if
|
||||
|
||||
If InStrRev(fileContent, "server.host") = 0 Then
|
||||
fileContent = fileContent & Chr(13) & Chr(10) & "server.host: 127.0.0.1"
|
||||
Else
|
||||
oRE.Pattern = "server.host:.*"
|
||||
fileContent = oRE.Replace(fileContent, "server.host: 127.0.0.1")
|
||||
End if
|
||||
|
||||
If InStrRev(fileContent, "server.basePath") = 0 Then
|
||||
fileContent = fileContent & Chr(13) & Chr(10) & "server.basePath: /dashboards"
|
||||
Else
|
||||
oRE.Pattern = "server.basePath:.*"
|
||||
fileContent = oRE.Replace(fileContent, "server.basePath: /dashboards")
|
||||
End if
|
||||
|
||||
Set objFile = objFSO.OpenTextFile(OPENSEARCH_DASHBOARDS_YML, ForWriting)
|
||||
|
||||
objFile.WriteLine fileContent
|
||||
|
||||
objFile.Close
|
||||
|
||||
Set Shell = Nothing
|
||||
|
||||
End Function
|
||||
@ -475,10 +525,40 @@ Function OpenRestySetup
|
||||
|
||||
End Function
|
||||
|
||||
Function MoveNginxConfigs
|
||||
Function OpenSearchStackSetup
|
||||
On Error Resume Next
|
||||
|
||||
Dim objFSO, objShell, sourceFolder, targetFolder, nginxFolder, configFile, configSslFile, sslScriptPath, sslCertPath, sslCertKeyPath, psCommand
|
||||
Dim ToolsFolder, OpenSearchDashboardsDir, OpenSearchDashboardsService, OpenSearchDashboardsPlugin, RemoveOSDSecurity, FluentBitDir, FluentBitService
|
||||
|
||||
Set objShell = CreateObject("WScript.Shell")
|
||||
|
||||
ToolsFolder = Session.Property("APPDIR") & "tools\"
|
||||
OpenSearchDashboardsDir = Session.Property("APPDIR") & "opensearch-dashboards-2.11.1\"
|
||||
OpenSearchDashboardsService = OpenSearchDashboardsDir & "winsw\OpenSearchDashboards.exe"
|
||||
OpenSearchDashboardsPlugin = OpenSearchDashboardsDir & "bin\opensearch-dashboards-plugin.bat"
|
||||
FluentBitDir = Session.Property("APPDIR") & "fluent-bit-2.2.2-win64\"
|
||||
|
||||
FluentBitService = "sc.exe create Fluent-Bit binpath= """ & "\""" & FluentBitDir & "bin\fluent-bit.exe\"" -c \""" & FluentBitDir & "conf\fluent-bit.conf\""""" & " start=delayed-auto"
|
||||
Call objShell.Run("cmd /C " & """" & FluentBitService & """",0,true)
|
||||
|
||||
RemoveOSDSecurity = """" & OpenSearchDashboardsPlugin & """ remove securityDashboards"
|
||||
Call objShell.Run("cmd /C " & """" & RemoveOSDSecurity & """",0,true)
|
||||
|
||||
objShell.Run "xcopy """ & ToolsFolder & "\OpenSearchDashboards*"" """ & OpenSearchDashboardsDir & "winsw\"" /E /I /Y", 0, True
|
||||
|
||||
objShell.Run """" & OpenSearchDashboardsService & """ install", 0, True
|
||||
objShell.Run """" & OpenSearchDashboardsService & """ start", 0, True
|
||||
|
||||
objShell.Run "cmd /c RMDIR /S /Q """ & ToolsFolder & """", 0, True
|
||||
|
||||
Set objShell = Nothing
|
||||
|
||||
End Function
|
||||
|
||||
Function MoveConfigs
|
||||
On Error Resume Next
|
||||
|
||||
Dim objFSO, objShell, sourceFolder, targetFolder, nginxFolder, configFile, configSslFile, sslScriptPath, sslCertPath, sslCertKeyPath, psCommand, FluentBitSourceFile, FluentBitDstFolder
|
||||
|
||||
' Define source and target paths
|
||||
Set objFSO = CreateObject("Scripting.FileSystemObject")
|
||||
@ -489,6 +569,8 @@ Function MoveNginxConfigs
|
||||
configSslFile = targetFolder & "\onlyoffice-proxy-ssl.conf.tmpl"
|
||||
configFile = targetFolder & "\onlyoffice-proxy.conf"
|
||||
sslScriptPath = Session.Property("APPDIR") & "sbin\docspace-ssl-setup.ps1"
|
||||
FluentBitSourceFile = Session.Property("APPDIR") & "config\fluent-bit.conf"
|
||||
FluentBitDstFolder = "C:\OpenSearchStack\fluent-bit-2.2.2-win64\conf\"
|
||||
|
||||
' Read content and extract SSL certificate and key paths if it exists
|
||||
If objFSO.FileExists(configFile) Then
|
||||
@ -525,6 +607,14 @@ Function MoveNginxConfigs
|
||||
WScript.Echo "Source file not found."
|
||||
End If
|
||||
|
||||
' Delete
|
||||
If objFSO.FileExists(FluentBitDstFolder & "fluent-bit.conf") Then
|
||||
objFSO.DeleteFile FluentBitDstFolder & "fluent-bit.conf", True
|
||||
If objFSO.FileExists(FluentBitSourceFile) Then
|
||||
objFSO.MoveFile FluentBitSourceFile, FluentBitDstFolder
|
||||
End If
|
||||
End If
|
||||
|
||||
Set objFSO = Nothing
|
||||
Set objShell = Nothing
|
||||
End Function
|
||||
|
@ -1,3 +1,4 @@
|
||||
gitdb==4.0.11
|
||||
GitPython==3.1.40
|
||||
smmap==5.0.1
|
||||
PyGithub==2.2.0
|
@ -3,7 +3,8 @@
|
||||
<name>ONLYOFFICE Editors SSR</name>
|
||||
<startmode>manual</startmode>
|
||||
<executable>node</executable>
|
||||
<arguments>../../publish/web/editor/server.js</arguments>
|
||||
<arguments>server.js</arguments>
|
||||
<workingdirectory>%BASE%\..\..\client\packages\doceditor</workingdirectory>
|
||||
<log mode="none"/>
|
||||
<delayedAutoStart>true</delayedAutoStart>
|
||||
<onfailure action="none" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
set -ex
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
@ -105,6 +105,32 @@ function check_hw() {
|
||||
}
|
||||
|
||||
|
||||
#############################################################################################
|
||||
# Add nexus repositories for test packages for .deb and .rpm packages
|
||||
# Globals: None
|
||||
# Arguments: None
|
||||
# Outputs: None
|
||||
#############################################################################################
|
||||
function add-repo-deb() {
|
||||
mkdir -p -m 700 $HOME/.gnupg
|
||||
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://nexus.onlyoffice.com/repository/4testing-debian stable main" | \
|
||||
sudo tee /etc/apt/sources.list.d/onlyoffice4testing.list
|
||||
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | \
|
||||
gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/onlyoffice.gpg --import
|
||||
chmod 644 /usr/share/keyrings/onlyoffice.gpg
|
||||
}
|
||||
|
||||
function add-repo-rpm() {
|
||||
cat > /etc/yum.repos.d/onlyoffice4testing.repo <<END
|
||||
[onlyoffice4testing]
|
||||
name=onlyoffice4testing repo
|
||||
baseurl=https://nexus.onlyoffice.com/repository/centos-testing/4testing/main/noarch
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
gpgkey=https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE
|
||||
END
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# Prepare vagrant boxes like: set hostname/remove postfix for DEB distributions
|
||||
# Globals:
|
||||
@ -115,70 +141,50 @@ function check_hw() {
|
||||
# ☑ PREPAVE_VM: **<prepare_message>**
|
||||
#############################################################################################
|
||||
function prepare_vm() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
source /etc/os-release
|
||||
case $ID in
|
||||
ubuntu)
|
||||
[[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-deb
|
||||
;;
|
||||
|
||||
if [ -f /etc/lsb-release ] ; then
|
||||
DIST=`cat /etc/lsb-release | grep '^DISTRIB_ID' | awk -F= '{ print $2 }'`
|
||||
REV=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }'`
|
||||
DISTRIB_CODENAME=`cat /etc/lsb-release | grep '^DISTRIB_CODENAME' | awk -F= '{ print $2 }'`
|
||||
DISTRIB_RELEASE=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }'`
|
||||
elif [ -f /etc/lsb_release ] || [ -f /usr/bin/lsb_release ] ; then
|
||||
DIST=`lsb_release -a 2>&1 | grep 'Distributor ID:' | awk -F ":" '{print $2 }'`
|
||||
REV=`lsb_release -a 2>&1 | grep 'Release:' | awk -F ":" '{print $2 }'`
|
||||
DISTRIB_CODENAME=`lsb_release -a 2>&1 | grep 'Codename:' | awk -F ":" '{print $2 }'`
|
||||
DISTRIB_RELEASE=`lsb_release -a 2>&1 | grep 'Release:' | awk -F ":" '{print $2 }'`
|
||||
elif [ -f /etc/os-release ] ; then
|
||||
DISTRIB_CODENAME=$(grep "VERSION=" /etc/os-release |awk -F= {' print $2'}|sed s/\"//g |sed s/[0-9]//g | sed s/\)$//g |sed s/\(//g | tr -d '[:space:]')
|
||||
DISTRIB_RELEASE=$(grep "VERSION_ID=" /etc/os-release |awk -F= {' print $2'}|sed s/\"//g |sed s/[0-9]//g | sed s/\)$//g |sed s/\(//g | tr -d '[:space:]')
|
||||
fi
|
||||
debian)
|
||||
if [ "$VERSION_CODENAME" == "bookworm" ]; then
|
||||
apt-get update -y
|
||||
apt install -y curl gnupg
|
||||
fi
|
||||
apt-get remove postfix -y
|
||||
echo "${COLOR_GREEN}☑ PREPAVE_VM: Postfix was removed${COLOR_RESET}"
|
||||
[[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-deb
|
||||
;;
|
||||
|
||||
DIST=`echo "$DIST" | tr '[:upper:]' '[:lower:]' | xargs`;
|
||||
DISTRIB_CODENAME=`echo "$DISTRIB_CODENAME" | tr '[:upper:]' '[:lower:]' | xargs`;
|
||||
REV=`echo "$REV" | xargs`;
|
||||
fedora)
|
||||
[[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-rpm
|
||||
;;
|
||||
|
||||
if [ ! -f /etc/centos-release ]; then
|
||||
if [ "${DIST}" = "debian" ]; then
|
||||
if [ "${DISTRIB_CODENAME}" == "bookworm" ]; then
|
||||
apt-get update -y
|
||||
apt install -y curl gnupg
|
||||
fi
|
||||
centos)
|
||||
if [ "$VERSION_ID" == "9" ]; then
|
||||
update-crypto-policies --set LEGACY
|
||||
echo "${COLOR_GREEN}☑ PREPAVE_VM: sha1 gpg key chek enabled${COLOR_RESET}"
|
||||
fi
|
||||
[[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-rpm
|
||||
yum -y install centos*-release
|
||||
;;
|
||||
|
||||
apt-get remove postfix -y
|
||||
echo "${COLOR_GREEN}☑ PREPAVE_VM: Postfix was removed${COLOR_RESET}"
|
||||
fi
|
||||
*)
|
||||
echo "${COLOR_RED}Failed to determine Linux dist${COLOR_RESET}"; exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${TEST_REPO_ENABLE}" == 'true' ]; then
|
||||
mkdir -p -m 700 $HOME/.gnupg
|
||||
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://nexus.onlyoffice.com/repository/4testing-debian stable main" | sudo tee /etc/apt/sources.list.d/onlyoffice4testing.list
|
||||
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/onlyoffice.gpg --import
|
||||
chmod 644 /usr/share/keyrings/onlyoffice.gpg
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f /etc/centos-release ]; then
|
||||
if [ "${TEST_REPO_ENABLE}" == 'true' ]; then
|
||||
cat > /etc/yum.repos.d/onlyoffice4testing.repo <<END
|
||||
[onlyoffice4testing]
|
||||
name=onlyoffice4testing repo
|
||||
baseurl=https://nexus.onlyoffice.com/repository/centos-testing/4testing/main/noarch
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
gpgkey=https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE
|
||||
END
|
||||
yum -y install centos*-release
|
||||
fi
|
||||
|
||||
local REV=$(cat /etc/redhat-release | sed 's/[^0-9.]*//g')
|
||||
if [[ "${REV}" =~ ^9 ]]; then
|
||||
update-crypto-policies --set LEGACY
|
||||
echo "${COLOR_GREEN}☑ PREPAVE_VM: sha1 gpg key chek enabled${COLOR_RESET}"
|
||||
fi
|
||||
else
|
||||
echo "${COLOR_RED}File /etc/os-release doesn't exist${COLOR_RESET}"; exit 1
|
||||
fi
|
||||
|
||||
# Clean up home folder
|
||||
rm -rf /home/vagrant/*
|
||||
|
||||
if [ -d /tmp/docspace ]; then
|
||||
mv /tmp/docspace/* /home/vagrant
|
||||
mv /tmp/docspace/* /home/vagrant
|
||||
fi
|
||||
|
||||
echo '127.0.0.1 host4test' | sudo tee -a /etc/hosts
|
||||
|
Loading…
Reference in New Issue
Block a user