Merge branch 'develop' into feature/resize-table

This commit is contained in:
Alexey Safronov 2023-04-20 14:23:50 +04:00
commit df13ad5afd
682 changed files with 18243 additions and 19145 deletions

1
.gitignore vendored
View File

@ -50,3 +50,4 @@ TestsResults/
**/.yarn/cache
**/.yarn/install-state.gz
licenses.csv

File diff suppressed because one or more lines are too long

View File

@ -7,5 +7,7 @@ plugins:
spec: "@yarnpkg/plugin-interactive-tools"
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version"
- path: .yarn/plugins/@yarnpkg/plugin-licenses-audit.cjs
spec: "https://raw.githubusercontent.com/tophat/yarn-plugin-licenses/master/bundles/@yarnpkg/plugin-licenses-audit.js"
yarnPath: .yarn/releases/yarn-3.2.4.cjs

View File

@ -41,26 +41,6 @@ elif [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
apt-get install -y --only-upgrade ${package_sysname}-documentserver
fi
NGINX_ROOT_DIR="/etc/nginx"
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
if ! id "nginx" &>/dev/null; then
systemctl stop nginx
rm -dfr /var/log/nginx/*
rm -dfr /var/cache/nginx/*
useradd -s /bin/false nginx
systemctl start nginx
else
systemctl reload nginx
fi
if [ "$PRODUCT_INSTALLED" = "false" ]; then
echo ${product} ${product}/db-pwd select $MYSQL_SERVER_PASS | sudo debconf-set-selections
echo ${product} ${product}/db-user select $MYSQL_SERVER_USER | sudo debconf-set-selections

View File

@ -118,14 +118,8 @@ apt-get install -o DPkg::options::="--force-confnew" -yq \
postgresql \
redis-server \
rabbitmq-server \
nginx-extras
if [ -e /etc/redis/redis.conf ]; then
sed -i "s/bind .*/bind 127.0.0.1/g" /etc/redis/redis.conf
sed -r "/^save\s[0-9]+/d" -i /etc/redis/redis.conf
service redis-server restart
fi
nginx-extras \
ffmpeg
if [ ! -e /usr/bin/json ]; then
npm i json -g >/dev/null 2>&1

View File

@ -10,13 +10,6 @@ cat<<EOF
EOF
if [ -e /etc/redis.conf ]; then
sed -i "s/bind .*/bind 127.0.0.1/g" /etc/redis.conf
sed -r "/^save\s[0-9]+/d" -i /etc/redis.conf
systemctl restart redis
fi
sed "/host\s*all\s*all\s*127\.0\.0\.1\/32\s*ident$/s|ident$|trust|" -i /var/lib/pgsql/data/pg_hba.conf
sed "/host\s*all\s*all\s*::1\/128\s*ident$/s|ident$|trust|" -i /var/lib/pgsql/data/pg_hba.conf
@ -148,22 +141,6 @@ elif [[ $PRODUCT_CHECK_UPDATE -eq $UPDATE_AVAILABLE_CODE ]]; then
-mysqlp ${MYSQL_ROOT_PASS}
fi
NGINX_ROOT_DIR="/etc/nginx"
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
if rpm -q "firewalld"; then
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
systemctl restart firewalld.service
fi
systemctl restart nginx
echo ""
echo "$RES_INSTALL_SUCCESS"
echo "$RES_QUESTIONS"

View File

@ -50,7 +50,6 @@ yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusi
MONOREV=$REV
if [ "$REV" = "9" ]; then
MONOREV="8"
yum localinstall -y --nogpgcheck https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/xorg-x11-font-utils-7.5-41.el8.x86_64.rpm
elif [ "$REV" = "8" ]; then
POWERTOOLS_REPO="--enablerepo=powertools"
fi
@ -61,6 +60,7 @@ curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.
#add nodejs repo
curl -sL https://rpm.nodesource.com/setup_16.x | sed 's/centos|/'$DIST'|/g' | sudo bash - || true
rpm --import http://rpm.nodesource.com/pub/el/NODESOURCE-GPG-SIGNING-KEY-EL
#add dotnet repo
if [ $REV = "7" ] || [[ $DIST != "redhat" && $REV = "8" ]]; then
@ -104,9 +104,6 @@ gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
END
${package_manager} -y install python3-dnf-plugin-versionlock || ${package_manager} -y install yum-plugin-versionlock
${package_manager} versionlock clear
${package_manager} -y install epel-release \
python3 \
nodejs \
@ -119,7 +116,8 @@ ${package_manager} -y install epel-release \
rabbitmq-server$rabbitmq_version \
redis --enablerepo=remi \
SDL2 $POWERTOOLS_REPO \
expect
expect \
ffmpeg
py3_version=$(python3 -c 'import sys; print(sys.version_info.minor)')
if [[ $py3_version -lt 6 ]]; then

View File

@ -420,6 +420,12 @@ setup_nginx(){
rm -f $NGINX_CONF/default.conf >/dev/null 2>&1 || rm -f $NGINX_DIR/sites-enabled/default >/dev/null 2>&1
sed -i "s/listen.*;/listen $APP_PORT;/" $NGINX_CONF/${PACKAGE_SYSNAME}.conf
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
sed "s!\(^worker_processes\).*;!\1 ${NGINX_WORKER_PROCESSES};!" -i ${NGINX_ROOT_DIR}/nginx.conf
sed "s!\(worker_connections\).*;!\1 ${NGINX_WORKER_CONNECTIONS};!" -i ${NGINX_ROOT_DIR}/nginx.conf
if [ "$DIST" = "RedHat" ]; then
# Remove default nginx settings
DELETION_LINE=$(sed -n '/server {/=' /etc/nginx/nginx.conf | head -n 1)
@ -465,7 +471,26 @@ setup_nginx(){
true
done
fi
if rpm -q "firewalld"; then
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
systemctl restart firewalld.service
fi
elif [ "$DIST" = "Debian" ]; then
if ! id "nginx" &>/dev/null; then
systemctl stop nginx
rm -dfr /var/log/nginx/*
rm -dfr /var/cache/nginx/*
useradd -s /bin/false nginx
systemctl start nginx
else
systemctl reload nginx
fi
fi
chown nginx:nginx /etc/nginx/* -R
systemctl enable nginx >/dev/null 2>&1
systemctl restart nginx
@ -574,6 +599,11 @@ setup_redis() {
sed "s_\(\"Host\":\).*_\1 \"${REDIS_HOST}\",_" -i $APP_DIR/redis.json
sed "s_\(\"Port\":\).*_\1 \"${REDIS_PORT}\"_" -i $APP_DIR/redis.json
if [ -e /etc/redis/redis.conf ]; then
sed "s_\(^bind\).*_\1 ${REDIS_HOST}_" -i /etc/redis/redis.conf
sed -r "/^save\s[0-9]+/d" -i /etc/redis/redis.conf
fi
systemctl enable $REDIS_PACKAGE >/dev/null 2>&1
systemctl restart $REDIS_PACKAGE

View File

@ -63,6 +63,7 @@ Package: {{product}}-files-services
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
dotnet-sdk-7.0,
ffmpeg,
${misc:Depends},
${shlibs:Depends}
Description: {{product}}-files-services

View File

@ -260,13 +260,13 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket
CMD ["server.js", "ASC.Socket.IO"]
## ASC.SsoAuth ##
# FROM noderun AS ssoauth
# WORKDIR ${BUILD_PATH}/services/ASC.SsoAuth/
FROM noderun AS ssoauth
WORKDIR ${BUILD_PATH}/services/ASC.SsoAuth/
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.SsoAuth/service/ .
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.SsoAuth/service/ .
# CMD ["app.js", "ASC.SsoAuth"]
CMD ["app.js", "ASC.SsoAuth"]
## ASC.Studio.Notify ##
FROM dotnetrun AS studio_notify

View File

@ -2,50 +2,200 @@ FROM ubuntu:20.04 AS base
ENV DEBIAN_FRONTEND="noninteractive"
ENV TZ="Etc/UTC"
WORKDIR /tmp/workdir
RUN apt-get -yqq update && \
apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \
apt-get autoremove -y && \
apt-get clean -y
RUN apt-get -yqq update && \
apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \
apt-get autoremove -y && \
apt-get clean -y
FROM base as build
ENV FFMPEG_VERSION=6.0 \
AOM_VERSION=v1.0.0 \
CHROMAPRINT_VERSION=1.5.0 \
FDKAAC_VERSION=0.1.5 \
FONTCONFIG_VERSION=2.12.4 \
FREETYPE_VERSION=2.10.4 \
FRIBIDI_VERSION=0.19.7 \
KVAZAAR_VERSION=2.0.0 \
LAME_VERSION=3.100 \
LIBASS_VERSION=0.13.7 \
LIBPTHREAD_STUBS_VERSION=0.4 \
LIBVIDSTAB_VERSION=1.1.0 \
LIBXCB_VERSION=1.13.1 \
XCBPROTO_VERSION=1.13 \
OGG_VERSION=1.3.2 \
OPENCOREAMR_VERSION=0.1.5 \
OPUS_VERSION=1.2 \
OPENJPEG_VERSION=2.1.2 \
THEORA_VERSION=1.1.1 \
VORBIS_VERSION=1.3.5 \
VPX_VERSION=1.8.0 \
WEBP_VERSION=1.0.2 \
X264_VERSION=20170226-2245-stable \
X265_VERSION=3.4 \
VPX_VERSION=1.8.0 \
XAU_VERSION=1.0.9 \
XORG_MACROS_VERSION=1.19.2 \
XPROTO_VERSION=7.0.31 \
XVID_VERSION=1.3.4 \
LIBXML2_VERSION=2.9.12 \
LIBBLURAY_VERSION=1.1.2 \
LIBZMQ_VERSION=4.3.2 \
LIBSRT_VERSION=1.4.1 \
LIBARIBB24_VERSION=1.0.3 \
LIBPNG_VERSION=1.6.9 \
LIBVMAF_VERSION=2.1.1 \
SRC=/usr/local
ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib
ARG MAKEFLAGS="-j2"
ARG PKG_CONFIG_PATH="/opt/ffmpeg/share/pkgconfig:/opt/ffmpeg/lib/pkgconfig:/opt/ffmpeg/lib64/pkgconfig"
ARG PREFIX=/opt/ffmpeg
ARG LD_LIBRARY_PATH="/opt/ffmpeg/lib:/opt/ffmpeg/lib64"
ARG FREETYPE_SHA256SUM="5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac freetype-2.10.4.tar.gz"
ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz"
ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz"
ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz"
ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz"
ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz"
ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz"
ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz"
ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz"
ARG LIBBLURAY_SHA256SUM="a3dd452239b100dc9da0d01b30e1692693e2a332a7d29917bf84bb10ea7c0b42 libbluray-1.1.2.tar.bz2"
ARG LIBZMQ_SHA256SUM="02ecc88466ae38cf2c8d79f09cfd2675ba299a439680b64ade733e26a349edeb v4.3.2.tar.gz"
ARG LIBARIBB24_SHA256SUM="f61560738926e57f9173510389634d8c06cabedfa857db4b28fb7704707ff128 v1.0.3.tar.gz"
RUN buildDeps="autoconf \
automake \
cmake \
curl \
bzip2 \
libexpat1-dev \
g++ \
gcc \
git \
gperf \
libtool \
make \
meson \
nasm \
perl \
pkg-config \
python \
libssl-dev \
yasm \
zlib1g-dev" && \
ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib
ARG MAKEFLAGS="-j2"
ARG PKG_CONFIG_PATH="/opt/ffmpeg/share/pkgconfig:/opt/ffmpeg/lib/pkgconfig:/opt/ffmpeg/lib64/pkgconfig"
ARG PREFIX=/opt/ffmpeg
ARG LD_LIBRARY_PATH="/opt/ffmpeg/lib:/opt/ffmpeg/lib64"
ARG DEBIAN_FRONTEND=noninteractive
RUN buildDeps="autoconf \
automake \
cmake \
curl \
bzip2 \
libexpat1-dev \
g++ \
gcc \
git \
gperf \
libtool \
make \
meson \
nasm \
perl \
pkg-config \
python \
libssl-dev \
yasm \
zlib1g-dev" && \
apt-get -yqq update && \
apt-get install -yq --no-install-recommends ${buildDeps}
### libvpx
## libvmaf https://github.com/Netflix/vmaf
RUN \
if which meson || false; then \
echo "Building VMAF." && \
DIR=/tmp/vmaf && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/Netflix/vmaf/archive/v${LIBVMAF_VERSION}.tar.gz && \
tar -xz --strip-components=1 -f v${LIBVMAF_VERSION}.tar.gz && \
cd /tmp/vmaf/libvmaf && \
meson build --buildtype release --prefix=${PREFIX} && \
ninja -vC build && \
ninja -vC build install && \
mkdir -p ${PREFIX}/share/model/ && \
cp -r /tmp/vmaf/model/* ${PREFIX}/share/model/ && \
rm -rf ${DIR}; \
else \
echo "VMAF skipped."; \
fi
## opencore-amr https://sourceforge.net/projects/opencore-amr/
RUN \
DIR=/tmp/opencore-amr && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://sourceforge.net/projects/opencore-amr/files/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz/download | \
tar -zx --strip-components=1 && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## x264 http://www.videolan.org/developers/x264.html
RUN \
DIR=/tmp/x264 && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264_VERSION}.tar.bz2 | \
tar -jx --strip-components=1 && \
./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \
make && \
make install && \
rm -rf ${DIR}
### x265 http://x265.org/
RUN \
DIR=/tmp/x265 && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://github.com/videolan/x265/archive/refs/tags/${X265_VERSION}.tar.gz | \
tar -zx && \
cd x265-${X265_VERSION}/build/linux && \
sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \
sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
./multilib.sh && \
make -C 8bit install && \
rm -rf ${DIR}
### libogg https://www.xiph.org/ogg/
RUN \
DIR=/tmp/ogg && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \
echo ${OGG_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f libogg-${OGG_VERSION}.tar.gz && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
### libopus https://www.opus-codec.org/
RUN \
DIR=/tmp/opus && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz && \
echo ${OPUS_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f opus-${OPUS_VERSION}.tar.gz && \
autoreconf -fiv && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
### libvorbis https://xiph.org/vorbis/
RUN \
DIR=/tmp/vorbis && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \
echo ${VORBIS_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f libvorbis-${VORBIS_VERSION}.tar.gz && \
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
### libtheora http://www.theora.org/
RUN \
DIR=/tmp/theora && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz && \
echo ${THEORA_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f libtheora-${THEORA_VERSION}.tar.gz && \
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
### libvpx https://www.webmproject.org/code/
RUN \
DIR=/tmp/vpx && \
mkdir -p ${DIR} && \
@ -57,22 +207,349 @@ RUN \
make && \
make install && \
rm -rf ${DIR}
## Download ffmpeg
### libwebp https://developers.google.com/speed/webp/
RUN \
DIR=/tmp/vebp && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \
tar -zx --strip-components=1 && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
### libmp3lame http://lame.sourceforge.net/
RUN \
DIR=/tmp/lame && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://sourceforge.net/projects/lame/files/lame/${LAME_VERSION}/lame-${LAME_VERSION}.tar.gz/download | \
tar -zx --strip-components=1 && \
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --disable-frontend && \
make && \
make install && \
rm -rf ${DIR}
### xvid https://www.xvid.com/
RUN \
DIR=/tmp/xvid && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz && \
echo ${XVID_SHA256SUM} | sha256sum --check && \
tar -zx -f xvidcore-${XVID_VERSION}.tar.gz && \
cd xvidcore/build/generic && \
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" && \
make && \
make install && \
rm -rf ${DIR}
### fdk-aac https://github.com/mstorsjo/fdk-aac
RUN \
DIR=/tmp/fdk-aac && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC_VERSION}.tar.gz | \
tar -zx --strip-components=1 && \
autoreconf -fiv && \
./configure --prefix="${PREFIX}" --enable-shared --datadir="${DIR}" && \
make && \
make install && \
rm -rf ${DIR}
## openjpeg https://github.com/uclouvain/openjpeg
RUN \
DIR=/tmp/openjpeg && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz | \
tar -zx --strip-components=1 && \
cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
make && \
make install && \
rm -rf ${DIR}
## freetype https://www.freetype.org/
RUN \
DIR=/tmp/freetype && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
echo ${FREETYPE_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f freetype-${FREETYPE_VERSION}.tar.gz && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## libvstab https://github.com/georgmartius/vid.stab
RUN \
DIR=/tmp/vid.stab && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz && \
echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f v${LIBVIDSTAB_VERSION}.tar.gz && \
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
make && \
make install && \
rm -rf ${DIR}
## fridibi https://www.fribidi.org/
RUN \
DIR=/tmp/fribidi && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/fribidi/fribidi/archive/${FRIBIDI_VERSION}.tar.gz && \
echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f ${FRIBIDI_VERSION}.tar.gz && \
sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib bin/' Makefile.am && \
./bootstrap --no-config --auto && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make -j1 && \
make install && \
rm -rf ${DIR}
## fontconfig https://www.freedesktop.org/wiki/Software/fontconfig/
RUN \
DIR=/tmp/fontconfig && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG_VERSION}.tar.bz2 && \
tar -jx --strip-components=1 -f fontconfig-${FONTCONFIG_VERSION}.tar.bz2 && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## libass https://github.com/libass/libass
RUN \
DIR=/tmp/libass && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/libass/libass/archive/${LIBASS_VERSION}.tar.gz && \
echo ${LIBASS_SHA256SUM} | sha256sum --check && \
tar -zx --strip-components=1 -f ${LIBASS_VERSION}.tar.gz && \
./autogen.sh && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## kvazaar https://github.com/ultravideo/kvazaar
RUN \
DIR=/tmp/kvazaar && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f v${KVAZAAR_VERSION}.tar.gz && \
./autogen.sh && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/aom && \
git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \
cd ${DIR} ; \
rm -rf CMakeCache.txt CMakeFiles ; \
mkdir -p ./aom_build ; \
cd ./aom_build ; \
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \
make ; \
make install ; \
rm -rf ${DIR}
## libxcb (and supporting libraries) for screen capture https://xcb.freedesktop.org/
RUN \
DIR=/tmp/xorg-macros && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://www.x.org/archive//individual/util/util-macros-${XORG_MACROS_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f util-macros-${XORG_MACROS_VERSION}.tar.gz && \
./configure --srcdir=${DIR} --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/xproto && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://www.x.org/archive/individual/proto/xproto-${XPROTO_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f xproto-${XPROTO_VERSION}.tar.gz && \
./configure --srcdir=${DIR} --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/libXau && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://www.x.org/archive/individual/lib/libXau-${XAU_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f libXau-${XAU_VERSION}.tar.gz && \
./configure --srcdir=${DIR} --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/libpthread-stubs && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://xcb.freedesktop.org/dist/libpthread-stubs-${LIBPTHREAD_STUBS_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f libpthread-stubs-${LIBPTHREAD_STUBS_VERSION}.tar.gz && \
./configure --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/libxcb-proto && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://xcb.freedesktop.org/dist/xcb-proto-${XCBPROTO_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f xcb-proto-${XCBPROTO_VERSION}.tar.gz && \
ACLOCAL_PATH="${PREFIX}/share/aclocal" ./autogen.sh && \
./configure --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
RUN \
DIR=/tmp/libxcb && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://xcb.freedesktop.org/dist/libxcb-${LIBXCB_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f libxcb-${LIBXCB_VERSION}.tar.gz && \
ACLOCAL_PATH="${PREFIX}/share/aclocal" ./autogen.sh && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## libxml2 - for libbluray
RUN \
DIR=/tmp/libxml2 && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://github.com/GNOME/libxml2/archive/refs/tags/v${LIBXML2_VERSION}.tar.gz | \
tar -xz --strip-components=1 && \
./autogen.sh --prefix="${PREFIX}" --with-ftp=no --with-http=no --with-python=no && \
make && \
make install && \
rm -rf ${DIR}
## libbluray - Requires libxml, freetype, and fontconfig
RUN \
DIR=/tmp/libbluray && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://download.videolan.org/pub/videolan/libbluray/${LIBBLURAY_VERSION}/libbluray-${LIBBLURAY_VERSION}.tar.bz2 && \
echo ${LIBBLURAY_SHA256SUM} | sha256sum --check && \
tar -jx --strip-components=1 -f libbluray-${LIBBLURAY_VERSION}.tar.bz2 && \
./configure --prefix="${PREFIX}" --disable-examples --disable-bdjava-jar --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
## libzmq https://github.com/zeromq/libzmq/
RUN \
DIR=/tmp/libzmq && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/zeromq/libzmq/archive/v${LIBZMQ_VERSION}.tar.gz && \
echo ${LIBZMQ_SHA256SUM} | sha256sum --check && \
tar -xz --strip-components=1 -f v${LIBZMQ_VERSION}.tar.gz && \
./autogen.sh && \
./configure --prefix="${PREFIX}" && \
make && \
make check && \
make install && \
rm -rf ${DIR}
## libsrt https://github.com/Haivision/srt
RUN \
DIR=/tmp/srt && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/Haivision/srt/archive/v${LIBSRT_VERSION}.tar.gz && \
tar -xz --strip-components=1 -f v${LIBSRT_VERSION}.tar.gz && \
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
make && \
make install && \
rm -rf ${DIR}
## libpng
RUN \
DIR=/tmp/png && \
mkdir -p ${DIR} && \
cd ${DIR} && \
git clone https://git.code.sf.net/p/libpng/code ${DIR} -b v${LIBPNG_VERSION} --depth 1 && \
./autogen.sh && \
./configure --prefix="${PREFIX}" && \
make check && \
make install && \
rm -rf ${DIR}
## libaribb24
RUN \
DIR=/tmp/b24 && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/nkoriyama/aribb24/archive/v${LIBARIBB24_VERSION}.tar.gz && \
echo ${LIBARIBB24_SHA256SUM} | sha256sum --check && \
tar -xz --strip-components=1 -f v${LIBARIBB24_VERSION}.tar.gz && \
autoreconf -fiv && \
./configure CFLAGS="-I${PREFIX}/include -fPIC" --prefix="${PREFIX}" && \
make && \
make install && \
rm -rf ${DIR}
## Download ffmpeg https://ffmpeg.org/
RUN \
DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \
curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \
tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \
./configure --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-gpl --extra-libs=-ldl && \
make ; make install
## Build ffmpeg
## Build ffmpeg https://ffmpeg.org/
RUN \
DIR=/tmp/ffmpeg && cd ${DIR} && \
./configure \
--disable-debug \
--disable-doc \
--disable-ffplay \
--enable-fontconfig \
--enable-gpl \
--enable-libaom \
--enable-libaribb24 \
--enable-libass \
--enable-libbluray \
--enable-libfdk_aac \
--enable-libfreetype \
--enable-libkvazaar \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopenjpeg \
--enable-libopus \
--enable-libsrt \
--enable-libtheora \
--enable-libvidstab \
--enable-libvmaf \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libxcb \
--enable-libxvid \
--enable-libzmq \
--enable-nonfree \
--enable-openssl \
--enable-postproc \
--enable-shared \
--enable-small \
--enable-version3 \
--extra-cflags="-I${PREFIX}/include" \
--extra-ldflags="-L${PREFIX}/lib" \
--extra-libs=-ldl \
@ -81,6 +558,7 @@ RUN \
make clean && \
make && \
make install && \
make tools/zmqsend && cp tools/zmqsend ${PREFIX}/bin/ && \
make distclean && \
hash -r && \
cd tools && \

View File

@ -106,12 +106,12 @@ services:
target: studio
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}"
# onlyoffice-ssoauth:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: ssoauth
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
onlyoffice-ssoauth:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: ssoauth
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
# onlyoffice-webhooks-service:
# build:

View File

@ -129,13 +129,13 @@ services:
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}"
container_name: ${STUDIO_HOST}
# onlyoffice-ssoauth:
# <<: *x-service-base
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
# container_name: ${SSOAUTH_HOST}
# expose:
# - ${SERVICE_PORT}
# - "9834"
onlyoffice-ssoauth:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
container_name: ${SSOAUTH_HOST}
expose:
- ${SERVICE_PORT}
- "9834"
# onlyoffice-webhooks-service:
# <<: *x-service-base
@ -168,7 +168,7 @@ services:
- onlyoffice-api
# - onlyoffice-api-system
- onlyoffice-studio
# - onlyoffice-ssoauth
- onlyoffice-ssoauth
environment:
- SERVICE_BACKUP=${SERVICE_BACKUP}
- SERVICE_FILES=${SERVICE_FILES}

View File

@ -18,7 +18,7 @@ Common
Summary: Files-services
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: dotnet-sdk-7.0
Requires: dotnet-sdk-7.0, ffmpeg
AutoReqProv: no
%description files-services
Files-services

View File

@ -2,4 +2,9 @@ PUSHD %~dp0..
set dir=%~dp0..
echo %dir%
dotnet test common\Tests\Frontend.Translations.Tests\Frontend.Translations.Tests.csproj --filter Name~SpellCheckTest -l:html --environment "BASE_DIR=%dir%" --results-directory "%dir%/TestsResults"
set save=false
if /I "%1" == "-s" set save=%2 & shift
shift
dotnet test common\Tests\Frontend.Translations.Tests\Frontend.Translations.Tests.csproj --filter Name~SpellCheckTest -l:html --environment "BASE_DIR=%dir%" --environment "SAVE=%save%" --results-directory "%dir%/TestsResults"

View File

@ -3,6 +3,15 @@ echo "Run script directory:" $dir
dir=$(builtin cd $rd/../; pwd)
save=false
while getopts s: flag
do
case "${flag}" in
s) save=${OPTARG};;
esac
done
echo "Root directory:" $dir
dotnet test $dir/common/Tests/Frontend.Translations.Tests/Frontend.Translations.Tests.csproj --filter Name~SpellCheckTest -l:html --results-directory "$dir/TestsResults" --environment "BASE_DIR=$dir"
dotnet test $dir/common/Tests/Frontend.Translations.Tests/Frontend.Translations.Tests.csproj --filter Name~SpellCheckTest -l:html --results-directory "$dir/TestsResults" --environment "BASE_DIR=$dir" --environment "SAVE=$save"

View File

@ -71,7 +71,7 @@ public class Criteria : ICloneable
/// Add nested Criteria
/// </summary>
/// <param name="nested"></param>
/// <returns>себя</returns>
/// <returns>Self</returns>
public Criteria Add(Criteria nested)
{
_nestedCriteras.Add(nested);

View File

@ -305,7 +305,7 @@ public class LdapOperationJob : DistributedTaskProgress
var ldapCurrentAcccessSettings = _settingsManager.Load<LdapCurrentAcccessSettings>().GetDefault();
_settingsManager.Save(ldapCurrentAcccessSettings);
//не снимать права при выключении
// don't remove permissions on shutdown
//var rights = new List<LdapSettings.AccessRight>();
//TakeUsersRights(rights);

View File

@ -70,7 +70,7 @@ public class RedisCacheNotify<T> : ICacheNotify<T> where T : IMessage<T>, new()
private string GetChannelName(CacheNotifyAction action)
{
return $"asc:channel:{action}:{typeof(T).FullName}".ToLower();
return $"asc:channel:{action}:{typeof(T).FullName}".ToLower(CultureInfo.InvariantCulture);
}
class RedisCachePubSubItem<T0>

View File

@ -96,16 +96,10 @@ public class BaseCommonLinkUtility
private readonly CoreSettings _coreSettings;
protected TenantManager _tenantManager;
private string _serverRootPath;
public string ServerRootPath
{
get
{
if (!string.IsNullOrEmpty(_serverRootPath))
{
return _serverRootPath;
}
UriBuilder result;
// first, take from current request
if (_httpContextAccessor?.HttpContext?.Request != null)
@ -153,7 +147,7 @@ public class BaseCommonLinkUtility
}
}
return _serverRootPath = result.Uri.ToString().TrimEnd('/');
return result.Uri.ToString().TrimEnd('/');
}
}

View File

@ -67,9 +67,7 @@ public class UserManager
private readonly UserFormatter _userFormatter;
private readonly QuotaSocketManager _quotaSocketManager;
private readonly TenantQuotaFeatureStatHelper _tenantQuotaFeatureStatHelper;
private Tenant _tenant;
private Tenant Tenant => _tenant ??= _tenantManager.GetCurrentTenant();
private Tenant Tenant => _tenantManager.GetCurrentTenant();
public UserManager()
{
@ -971,7 +969,7 @@ public class UserManager
{
return null;
}
return new Group
{
Id = g.ID,

View File

@ -123,7 +123,7 @@ public class WorkContext
INotifySender emailSender = _notifyServiceSender;
INotifySender telegramSender = _telegramSender;
INotifySender pushSender = _pushSender;
var postman = _configuration["core:notify:postman"];
@ -161,6 +161,11 @@ public class WorkContext
}
}
public void RegisterSendMethod(Func<DateTime, Task> method, string cron)
{
NotifyEngine.RegisterSendMethod(method, cron);
}
public void RegisterSendMethod(Action<DateTime> method, string cron)
{
NotifyEngine.RegisterSendMethod(method, cron);

View File

@ -39,7 +39,7 @@ public static class FilesConvertsExtension
modelBuilder
.Add(MySqlAddFilesConverts, Provider.MySql)
.Add(PgSqlAddFilesConverts, Provider.PostgreSql)
.HasData(
.HasData(
new FilesConverts { Input = ".csv", Output = ".ods" },
new FilesConverts { Input = ".csv", Output = ".pdf" },
new FilesConverts { Input = ".csv", Output = ".ots" },
@ -47,6 +47,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".csv", Output = ".xlsm" },
new FilesConverts { Input = ".csv", Output = ".xltm" },
new FilesConverts { Input = ".csv", Output = ".xltx" },
new FilesConverts { Input = ".doc", Output = ".docx" },
new FilesConverts { Input = ".doc", Output = ".docm" },
new FilesConverts { Input = ".doc", Output = ".dotm" },
@ -59,6 +60,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".doc", Output = ".pdf" },
new FilesConverts { Input = ".doc", Output = ".rtf" },
new FilesConverts { Input = ".doc", Output = ".txt" },
new FilesConverts { Input = ".docm", Output = ".docx" },
new FilesConverts { Input = ".docm", Output = ".dotm" },
new FilesConverts { Input = ".docm", Output = ".html" },
@ -70,6 +72,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".docm", Output = ".pdf" },
new FilesConverts { Input = ".docm", Output = ".rtf" },
new FilesConverts { Input = ".docm", Output = ".txt" },
new FilesConverts { Input = ".doct", Output = ".docx" },
new FilesConverts { Input = ".docx", Output = ".odt" },
new FilesConverts { Input = ".docx", Output = ".pdf" },
@ -82,9 +85,11 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".docx", Output = ".fb2" },
new FilesConverts { Input = ".docx", Output = ".ott" },
new FilesConverts { Input = ".docx", Output = ".docm" },
new FilesConverts { Input = ".docx", Output = ".docxf" },
new FilesConverts { Input = ".docxf", Output = ".docm" },
new FilesConverts { Input = ".docxf", Output = ".docx" },
new FilesConverts { Input = ".docxf", Output = ".dotm" },
new FilesConverts { Input = ".docxf", Output = ".odt" },
new FilesConverts { Input = ".docxf", Output = ".oform" },
new FilesConverts { Input = ".docxf", Output = ".pdf" },
@ -108,6 +113,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".dot", Output = ".fb2" },
new FilesConverts { Input = ".dot", Output = ".html" },
new FilesConverts { Input = ".dot", Output = ".ott" },
new FilesConverts { Input = ".dotm", Output = ".docx" },
new FilesConverts { Input = ".dotm", Output = ".odt" },
new FilesConverts { Input = ".dotm", Output = ".pdf" },
@ -119,6 +125,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".dotm", Output = ".fb2" },
new FilesConverts { Input = ".dotm", Output = ".html" },
new FilesConverts { Input = ".dotm", Output = ".ott" },
new FilesConverts { Input = ".dotx", Output = ".docx" },
new FilesConverts { Input = ".dotx", Output = ".odt" },
new FilesConverts { Input = ".dotx", Output = ".pdf" },
@ -130,6 +137,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".dotx", Output = ".fb2" },
new FilesConverts { Input = ".dotx", Output = ".html" },
new FilesConverts { Input = ".dotx", Output = ".ott" },
new FilesConverts { Input = ".epub", Output = ".docx" },
new FilesConverts { Input = ".epub", Output = ".odt" },
new FilesConverts { Input = ".epub", Output = ".pdf" },
@ -141,6 +149,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".epub", Output = ".fb2" },
new FilesConverts { Input = ".epub", Output = ".html" },
new FilesConverts { Input = ".epub", Output = ".ott" },
new FilesConverts { Input = ".fb2", Output = ".docx" },
new FilesConverts { Input = ".fb2", Output = ".odt" },
new FilesConverts { Input = ".fb2", Output = ".pdf" },
@ -152,12 +161,15 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".fb2", Output = ".epub" },
new FilesConverts { Input = ".fb2", Output = ".html" },
new FilesConverts { Input = ".fb2", Output = ".ott" },
new FilesConverts { Input = ".fodp", Output = ".odp" },
new FilesConverts { Input = ".fodp", Output = ".pdf" },
new FilesConverts { Input = ".fodp", Output = ".pptx" },
new FilesConverts { Input = ".fodp", Output = ".otp" },
new FilesConverts { Input = ".fodp", Output = ".potm" },
new FilesConverts { Input = ".fodp", Output = ".potx" },
new FilesConverts { Input = ".fodp", Output = ".ppsm" },
new FilesConverts { Input = ".fodp", Output = ".ppsx" },
new FilesConverts { Input = ".fodp", Output = ".pptm" },
new FilesConverts { Input = ".fods", Output = ".csv" },
new FilesConverts { Input = ".fods", Output = ".ods" },
@ -179,6 +191,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".fodt", Output = ".fb2" },
new FilesConverts { Input = ".fodt", Output = ".html" },
new FilesConverts { Input = ".fodt", Output = ".ott" },
new FilesConverts { Input = ".html", Output = ".docx" },
new FilesConverts { Input = ".html", Output = ".odt" },
new FilesConverts { Input = ".html", Output = ".pdf" },
@ -190,6 +203,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".html", Output = ".epub" },
new FilesConverts { Input = ".html", Output = ".fb2" },
new FilesConverts { Input = ".html", Output = ".ott" },
new FilesConverts { Input = ".mht", Output = ".docx" },
new FilesConverts { Input = ".mht", Output = ".odt" },
new FilesConverts { Input = ".mht", Output = ".pdf" },
@ -201,18 +215,25 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".mht", Output = ".epub" },
new FilesConverts { Input = ".mht", Output = ".fb2" },
new FilesConverts { Input = ".mht", Output = ".ott" },
new FilesConverts { Input = ".odp", Output = ".pdf" },
new FilesConverts { Input = ".odp", Output = ".pptx" },
new FilesConverts { Input = ".odp", Output = ".otp" },
new FilesConverts { Input = ".odp", Output = ".potm" },
new FilesConverts { Input = ".odp", Output = ".potx" },
new FilesConverts { Input = ".odp", Output = ".ppsm" },
new FilesConverts { Input = ".odp", Output = ".ppsx" },
new FilesConverts { Input = ".odp", Output = ".pptm" },
new FilesConverts { Input = ".otp", Output = ".odp" },
new FilesConverts { Input = ".otp", Output = ".pdf" },
new FilesConverts { Input = ".otp", Output = ".potm" },
new FilesConverts { Input = ".otp", Output = ".potx" },
new FilesConverts { Input = ".otp", Output = ".pptm" },
new FilesConverts { Input = ".otp", Output = ".ppsm" },
new FilesConverts { Input = ".otp", Output = ".ppsx" },
new FilesConverts { Input = ".otp", Output = ".pptx" },
new FilesConverts { Input = ".ods", Output = ".csv" },
new FilesConverts { Input = ".ods", Output = ".pdf" },
new FilesConverts { Input = ".ods", Output = ".xlsx" },
@ -220,6 +241,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".ods", Output = ".xlsm" },
new FilesConverts { Input = ".ods", Output = ".xltm" },
new FilesConverts { Input = ".ods", Output = ".xltx" },
new FilesConverts { Input = ".ots", Output = ".csv" },
new FilesConverts { Input = ".ots", Output = ".ods" },
new FilesConverts { Input = ".ots", Output = ".pdf" },
@ -227,7 +249,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".ots", Output = ".xltm" },
new FilesConverts { Input = ".ots", Output = ".xltx" },
new FilesConverts { Input = ".ots", Output = ".xlsx" },
new FilesConverts { Input = ".oxps", Output = ".pdf" },
new FilesConverts { Input = ".odt", Output = ".docx" },
new FilesConverts { Input = ".odt", Output = ".pdf" },
new FilesConverts { Input = ".odt", Output = ".rtf" },
@ -239,6 +261,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".odt", Output = ".fb2" },
new FilesConverts { Input = ".odt", Output = ".html" },
new FilesConverts { Input = ".odt", Output = ".ott" },
new FilesConverts { Input = ".ott", Output = ".docx" },
new FilesConverts { Input = ".ott", Output = ".odt" },
new FilesConverts { Input = ".ott", Output = ".pdf" },
@ -250,6 +273,32 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".ott", Output = ".epub" },
new FilesConverts { Input = ".ott", Output = ".fb2" },
new FilesConverts { Input = ".ott", Output = ".html" },
new FilesConverts { Input = ".oxps", Output = ".docm" },
new FilesConverts { Input = ".oxps", Output = ".docx" },
new FilesConverts { Input = ".oxps", Output = ".dotm" },
new FilesConverts { Input = ".oxps", Output = ".dotx" },
new FilesConverts { Input = ".oxps", Output = ".epub" },
new FilesConverts { Input = ".oxps", Output = ".fb2" },
new FilesConverts { Input = ".oxps", Output = ".html" },
new FilesConverts { Input = ".oxps", Output = ".odt" },
new FilesConverts { Input = ".oxps", Output = ".ott" },
new FilesConverts { Input = ".oxps", Output = ".pdf" },
new FilesConverts { Input = ".oxps", Output = ".rtf" },
new FilesConverts { Input = ".oxps", Output = ".txt" },
new FilesConverts { Input = ".pdf", Output = ".docm" },
new FilesConverts { Input = ".pdf", Output = ".docx" },
new FilesConverts { Input = ".pdf", Output = ".dotm" },
new FilesConverts { Input = ".pdf", Output = ".dotx" },
new FilesConverts { Input = ".pdf", Output = ".epub" },
new FilesConverts { Input = ".pdf", Output = ".fb2" },
new FilesConverts { Input = ".pdf", Output = ".html" },
new FilesConverts { Input = ".pdf", Output = ".odt" },
new FilesConverts { Input = ".pdf", Output = ".ott" },
new FilesConverts { Input = ".pdf", Output = ".rtf" },
new FilesConverts { Input = ".pdf", Output = ".txt" },
new FilesConverts { Input = ".pot", Output = ".odp" },
new FilesConverts { Input = ".pot", Output = ".pdf" },
new FilesConverts { Input = ".pot", Output = ".pptx" },
@ -257,18 +306,28 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".pot", Output = ".potm" },
new FilesConverts { Input = ".pot", Output = ".potx" },
new FilesConverts { Input = ".pot", Output = ".pptm" },
new FilesConverts { Input = ".pot", Output = ".ppsm" },
new FilesConverts { Input = ".pot", Output = ".ppsx" },
new FilesConverts { Input = ".potm", Output = ".odp" },
new FilesConverts { Input = ".potm", Output = ".pdf" },
new FilesConverts { Input = ".potm", Output = ".pptx" },
new FilesConverts { Input = ".potm", Output = ".otp" },
new FilesConverts { Input = ".potm", Output = ".potx" },
new FilesConverts { Input = ".potm", Output = ".pptm" },
new FilesConverts { Input = ".potm", Output = ".ppsm" },
new FilesConverts { Input = ".potm", Output = ".ppsx" },
new FilesConverts { Input = ".potx", Output = ".odp" },
new FilesConverts { Input = ".potx", Output = ".pdf" },
new FilesConverts { Input = ".potx", Output = ".pptx" },
new FilesConverts { Input = ".potx", Output = ".otp" },
new FilesConverts { Input = ".potx", Output = ".potm" },
new FilesConverts { Input = ".potx", Output = ".pptm" },
new FilesConverts { Input = ".potx", Output = ".ppsm" },
new FilesConverts { Input = ".potx", Output = ".ppsx" },
new FilesConverts { Input = ".pps", Output = ".odp" },
new FilesConverts { Input = ".pps", Output = ".pdf" },
new FilesConverts { Input = ".pps", Output = ".pptx" },
@ -276,6 +335,9 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".pps", Output = ".potm" },
new FilesConverts { Input = ".pps", Output = ".potx" },
new FilesConverts { Input = ".pps", Output = ".pptm" },
new FilesConverts { Input = ".pps", Output = ".ppsm" },
new FilesConverts { Input = ".pps", Output = ".ppsx" },
new FilesConverts { Input = ".ppsm", Output = ".odp" },
new FilesConverts { Input = ".ppsm", Output = ".pdf" },
new FilesConverts { Input = ".ppsm", Output = ".pptx" },
@ -283,13 +345,17 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".ppsm", Output = ".potm" },
new FilesConverts { Input = ".ppsm", Output = ".potx" },
new FilesConverts { Input = ".ppsm", Output = ".pptm" },
new FilesConverts { Input = ".ppsm", Output = ".ppsx" },
new FilesConverts { Input = ".ppsx", Output = ".odp" },
new FilesConverts { Input = ".ppsx", Output = ".pdf" },
new FilesConverts { Input = ".ppsx", Output = ".pptx" },
new FilesConverts { Input = ".ppsx", Output = ".otp" },
new FilesConverts { Input = ".ppsx", Output = ".potm" },
new FilesConverts { Input = ".ppsx", Output = ".potx" },
new FilesConverts { Input = ".ppsx", Output = ".ppsm" },
new FilesConverts { Input = ".ppsx", Output = ".pptm" },
new FilesConverts { Input = ".ppt", Output = ".odp" },
new FilesConverts { Input = ".ppt", Output = ".pdf" },
new FilesConverts { Input = ".ppt", Output = ".pptx" },
@ -297,12 +363,18 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".ppt", Output = ".potm" },
new FilesConverts { Input = ".ppt", Output = ".potx" },
new FilesConverts { Input = ".ppt", Output = ".pptm" },
new FilesConverts { Input = ".ppt", Output = ".ppsm" },
new FilesConverts { Input = ".ppt", Output = ".ppsx" },
new FilesConverts { Input = ".pptm", Output = ".odp" },
new FilesConverts { Input = ".pptm", Output = ".pdf" },
new FilesConverts { Input = ".pptm", Output = ".pptx" },
new FilesConverts { Input = ".pptm", Output = ".otp" },
new FilesConverts { Input = ".pptm", Output = ".potm" },
new FilesConverts { Input = ".pptm", Output = ".potx" },
new FilesConverts { Input = ".pptm", Output = ".ppsm" },
new FilesConverts { Input = ".pptm", Output = ".ppsx" },
new FilesConverts { Input = ".pptt", Output = ".pptx" },
new FilesConverts { Input = ".pptx", Output = ".odp" },
new FilesConverts { Input = ".pptx", Output = ".pdf" },
@ -310,6 +382,9 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".pptx", Output = ".potm" },
new FilesConverts { Input = ".pptx", Output = ".potx" },
new FilesConverts { Input = ".pptx", Output = ".pptm" },
new FilesConverts { Input = ".pptx", Output = ".ppsm" },
new FilesConverts { Input = ".pptx", Output = ".ppsx" },
new FilesConverts { Input = ".rtf", Output = ".odt" },
new FilesConverts { Input = ".rtf", Output = ".pdf" },
new FilesConverts { Input = ".rtf", Output = ".docx" },
@ -321,6 +396,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".rtf", Output = ".fb2" },
new FilesConverts { Input = ".rtf", Output = ".html" },
new FilesConverts { Input = ".rtf", Output = ".ott" },
new FilesConverts { Input = ".txt", Output = ".pdf" },
new FilesConverts { Input = ".txt", Output = ".docx" },
new FilesConverts { Input = ".txt", Output = ".odt" },
@ -332,6 +408,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".txt", Output = ".fb2" },
new FilesConverts { Input = ".txt", Output = ".html" },
new FilesConverts { Input = ".txt", Output = ".ott" },
new FilesConverts { Input = ".xls", Output = ".csv" },
new FilesConverts { Input = ".xls", Output = ".ods" },
new FilesConverts { Input = ".xls", Output = ".pdf" },
@ -340,6 +417,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xls", Output = ".xlsm" },
new FilesConverts { Input = ".xls", Output = ".xltm" },
new FilesConverts { Input = ".xls", Output = ".xltx" },
new FilesConverts { Input = ".xlsm", Output = ".csv" },
new FilesConverts { Input = ".xlsm", Output = ".xltm" },
new FilesConverts { Input = ".xlsm", Output = ".xltx" },
@ -347,6 +425,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xlsm", Output = ".pdf" },
new FilesConverts { Input = ".xlsm", Output = ".ods" },
new FilesConverts { Input = ".xlsm", Output = ".xlsx" },
new FilesConverts { Input = ".xlsx", Output = ".csv" },
new FilesConverts { Input = ".xlsx", Output = ".ods" },
new FilesConverts { Input = ".xlsx", Output = ".ots" },
@ -355,6 +434,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xlsx", Output = ".xltm" },
new FilesConverts { Input = ".xlsx", Output = ".xltx" },
new FilesConverts { Input = ".xlst", Output = ".xlsx" },
new FilesConverts { Input = ".xlt", Output = ".csv" },
new FilesConverts { Input = ".xlt", Output = ".ods" },
new FilesConverts { Input = ".xlt", Output = ".pdf" },
@ -363,6 +443,7 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xlt", Output = ".xlsm" },
new FilesConverts { Input = ".xlt", Output = ".xltm" },
new FilesConverts { Input = ".xlt", Output = ".xltx" },
new FilesConverts { Input = ".xltm", Output = ".csv" },
new FilesConverts { Input = ".xltm", Output = ".ods" },
new FilesConverts { Input = ".xltm", Output = ".pdf" },
@ -377,7 +458,6 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xltx", Output = ".xlsm" },
new FilesConverts { Input = ".xltx", Output = ".xltm" },
new FilesConverts { Input = ".xltx", Output = ".xlsx" },
new FilesConverts { Input = ".xps", Output = ".pdf" },
new FilesConverts { Input = ".xml", Output = ".docm" },
new FilesConverts { Input = ".xml", Output = ".docx" },
new FilesConverts { Input = ".xml", Output = ".dotm" },
@ -389,7 +469,20 @@ public static class FilesConvertsExtension
new FilesConverts { Input = ".xml", Output = ".ott" },
new FilesConverts { Input = ".xml", Output = ".pdf" },
new FilesConverts { Input = ".xml", Output = ".rtf" },
new FilesConverts { Input = ".xml", Output = ".txt" }
new FilesConverts { Input = ".xml", Output = ".txt" },
new FilesConverts { Input = ".xps", Output = ".docm" },
new FilesConverts { Input = ".xps", Output = ".docx" },
new FilesConverts { Input = ".xps", Output = ".dotm" },
new FilesConverts { Input = ".xps", Output = ".dotx" },
new FilesConverts { Input = ".xps", Output = ".epub" },
new FilesConverts { Input = ".xps", Output = ".fb2" },
new FilesConverts { Input = ".xps", Output = ".html" },
new FilesConverts { Input = ".xps", Output = ".odt" },
new FilesConverts { Input = ".xps", Output = ".ott" },
new FilesConverts { Input = ".xps", Output = ".pdf" },
new FilesConverts { Input = ".xps", Output = ".rtf" },
new FilesConverts { Input = ".xps", Output = ".txt" }
);
return modelBuilder;

View File

@ -29,16 +29,16 @@ namespace ASC.Geolocation;
[Scope]
public class GeolocationHelper
{
private readonly IDbContextFactory<CustomDbContext> _dbContextFactory;
private readonly CreatorDbContext _creatorDbContext;
private readonly ILogger<GeolocationHelper> _logger;
private readonly IHttpContextAccessor _httpContextAccessor;
public GeolocationHelper(
IDbContextFactory<CustomDbContext> dbContextFactory,
CreatorDbContext creatorDbContext,
ILogger<GeolocationHelper> logger,
IHttpContextAccessor httpContextAccessor)
{
_dbContextFactory = dbContextFactory;
_creatorDbContext = creatorDbContext;
_logger = logger;
_httpContextAccessor = httpContextAccessor;
}
@ -47,7 +47,7 @@ public class GeolocationHelper
{
try
{
using var dbContext = _dbContextFactory.CreateDbContext();
using var dbContext = _creatorDbContext.CreateDbContext<CustomDbContext>(nameConnectionString: "teamlabsite");
var ipformatted = FormatIP(ip);
var q = dbContext.DbipLocation
.Where(r => r.IPStart.CompareTo(ipformatted) <= 0)

View File

@ -100,6 +100,25 @@ public class NotifyEngine : INotifyEngine, IDisposable
_methodsEvent.Set();
}
internal void RegisterSendMethod(Func<DateTime, Task> method, string cron)
{
ArgumentNullException.ThrowIfNull(method);
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(cron);
var w = new SendMethodWrapper(method, cron, _logger);
lock (_sendMethods)
{
if (!_notifyScheduler.IsAlive)
{
_notifyScheduler.Start();
}
_sendMethods.Remove(w);
_sendMethods.Add(w);
}
_methodsEvent.Set();
}
internal void UnregisterSendMethod(Action<DateTime> method)
{
ArgumentNullException.ThrowIfNull(method);
@ -124,7 +143,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
copy = _sendMethods.ToList();
}
foreach(var w in copy)
foreach (var w in copy)
{
if (!w.ScheduleDate.HasValue)
{
@ -590,6 +609,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
private readonly SemaphoreSlim _semaphore;
private readonly CronExpression _cronExpression;
private readonly Action<DateTime> _method;
private readonly Func<DateTime, Task> _asyncMethod;
private readonly ILogger _logger;
public DateTime? ScheduleDate { get; private set; }
@ -608,6 +628,11 @@ public class NotifyEngine : INotifyEngine, IDisposable
UpdateScheduleDate(DateTime.UtcNow);
}
public SendMethodWrapper(Func<DateTime, Task> method, string cron, ILogger log) : this((Action<DateTime>)null, cron, log)
{
_asyncMethod = method;
}
public void UpdateScheduleDate(DateTime d)
{
try
@ -626,11 +651,18 @@ public class NotifyEngine : INotifyEngine, IDisposable
public async Task InvokeSendMethod(DateTime d)
{
await _semaphore.WaitAsync();
await Task.Run(() =>
await Task.Run(async () =>
{
try
{
_method(d);
if (_method != null)
{
_method(d);
}
else if (_asyncMethod != null)
{
await _asyncMethod(d);
}
}
catch (Exception e)
{
@ -642,7 +674,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
public override bool Equals(object obj)
{
return obj is SendMethodWrapper w && _method.Equals(w._method);
return obj is SendMethodWrapper w && ((_method != null && _method.Equals(w._method)) || (_asyncMethod != null && _asyncMethod.Equals(w._asyncMethod)));
}
public override int GetHashCode()

View File

@ -57,8 +57,8 @@ public class Feed
public string ContextId { get; set; }
public bool IsAllDayEvent { get; set; }
// это значит, что новость может обновляться (пр. добавление комментариев);
// следовательно и права доступа могут устаревать
// this means that the news can be updated (eg adding comments);
// hence permissions may be outdated
public bool Variate { get; private set; }
public Feed() { }

View File

@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
@ -13,12 +13,12 @@ namespace ASC.Migration.Resources {
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@ -33,7 +33,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@ -47,8 +47,8 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@ -61,7 +61,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Clearing temporary data.
/// Looks up a localized string similar to Clearing temporary data.
/// </summary>
internal static string ClearingTemporaryData {
get {
@ -70,7 +70,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Data processing....
/// Looks up a localized string similar to Data processing....
/// </summary>
internal static string DataProcessing {
get {
@ -79,7 +79,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Data processing completed.
/// Looks up a localized string similar to Data processing completed.
/// </summary>
internal static string DataProcessingCompleted {
get {
@ -88,7 +88,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Database parsing.
/// Looks up a localized string similar to Database parsing.
/// </summary>
internal static string DumpParse {
get {
@ -97,7 +97,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Mail`s Contacts.
/// Looks up a localized string similar to Mail`s Contacts.
/// </summary>
internal static string GoogleModuleNameContacts {
get {
@ -106,7 +106,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Google Drive`s Files.
/// Looks up a localized string similar to Google Drive`s Files.
/// </summary>
internal static string GoogleModuleNameDocuments {
get {
@ -115,7 +115,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Group migration {0} ({1}/{2}).
/// Looks up a localized string similar to Group migration {0} ({1}/{2}).
/// </summary>
internal static string GroupMigration {
get {
@ -124,7 +124,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Migrating user contacts {0} ({1}/{2}).
/// Looks up a localized string similar to Migrating user contacts {0} ({1}/{2}).
/// </summary>
internal static string MigratingUserContacts {
get {
@ -133,7 +133,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Migrating user files {0} ({1}/{2}).
/// Looks up a localized string similar to Migrating user files {0} ({1}/{2}).
/// </summary>
internal static string MigratingUserFiles {
get {
@ -142,7 +142,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Migration canceled.
/// Looks up a localized string similar to Migration canceled.
/// </summary>
internal static string MigrationCanceled {
get {
@ -151,7 +151,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Migration completed.
/// Looks up a localized string similar to Migration completed.
/// </summary>
internal static string MigrationCompleted {
get {
@ -160,7 +160,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Calendar.
/// Looks up a localized string similar to Calendar.
/// </summary>
internal static string ModuleNameCalendar {
get {
@ -169,7 +169,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Groups.
/// Looks up a localized string similar to Groups.
/// </summary>
internal static string ModuleNameGroups {
get {
@ -178,7 +178,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Mail.
/// Looks up a localized string similar to Mail.
/// </summary>
internal static string ModuleNameMail {
get {
@ -187,7 +187,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Users.
/// Looks up a localized string similar to Users.
/// </summary>
internal static string ModuleNameUsers {
get {
@ -196,7 +196,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Contacts.
/// Looks up a localized string similar to Contacts.
/// </summary>
internal static string NextcloudModuleNameContacts {
get {
@ -205,7 +205,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на User`s Files.
/// Looks up a localized string similar to User`s Files.
/// </summary>
internal static string NextcloudModuleNameDocuments {
get {
@ -214,7 +214,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Calendar.
/// Looks up a localized string similar to Calendar.
/// </summary>
internal static string OnlyofficeModuleNameCalendar {
get {
@ -223,7 +223,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Documents.
/// Looks up a localized string similar to Documents.
/// </summary>
internal static string OnlyofficeModuleNameDocuments {
get {
@ -232,7 +232,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Mail.
/// Looks up a localized string similar to Mail.
/// </summary>
internal static string OnlyofficeModuleNameMail {
get {
@ -241,7 +241,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на People.
/// Looks up a localized string similar to People.
/// </summary>
internal static string OnlyofficeModuleNamePeople {
get {
@ -250,7 +250,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Preparing for migration.
/// Looks up a localized string similar to Preparing for migration.
/// </summary>
internal static string PreparingForMigration {
get {
@ -259,7 +259,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Starting data processing....
/// Looks up a localized string similar to Starting data processing....
/// </summary>
internal static string StartOfDataProcessing {
get {
@ -268,7 +268,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Unzipping....
/// Looks up a localized string similar to Unzipping....
/// </summary>
internal static string Unzipping {
get {
@ -277,7 +277,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Unzipping completed....
/// Looks up a localized string similar to Unzipping completed....
/// </summary>
internal static string UnzippingFinished {
get {
@ -286,7 +286,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на User calendar migration {0} ({1}/{2}).
/// Looks up a localized string similar to User calendar migration {0} ({1}/{2}).
/// </summary>
internal static string UserCalendarMigration {
get {
@ -295,7 +295,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на User migration {0} ({1}/{2}).
/// Looks up a localized string similar to User migration {0} ({1}/{2}).
/// </summary>
internal static string UserMigration {
get {
@ -304,7 +304,7 @@ namespace ASC.Migration.Resources {
}
/// <summary>
/// Ищет локализованную строку, похожую на Failed to import user: {0} ({1}/{2}).
/// Looks up a localized string similar to Failed to import user: {0} ({1}/{2}).
/// </summary>
internal static string UserSkipped {
get {

View File

@ -28,7 +28,10 @@ const accessKeyId = aws.accessKeyId;
const secretAccessKey = aws.secretAccessKey;
const awsRegion = aws.region;
const logGroupName = aws.logGroupName;
const logStreamName = aws.logStreamName;
const logStreamName = aws.logStreamName.replace("${hostname}", os.hostname())
.replace("${applicationContext}", "SocketIO")
.replace("${guid}", randomUUID())
.replace("${date}", date.format(new Date(), 'YYYY/MM/DDTHH.mm.ss'));
if (!fs.existsSync(dirName)) {
fs.mkdirSync(dirName);
@ -54,17 +57,7 @@ var options = {
cloudWatch: {
name: 'aws',
level: "debug",
logStreamName: () => {
const hostname = os.hostname();
const now = new Date();
const guid = randomUUID();
const dateAsString = date.format(now, 'YYYY/MM/DDTHH.mm.ss');
return logStreamName.replace("${hostname}", hostname)
.replace("${applicationContext}", "SocketIO")
.replace("${guid}", guid)
.replace("${date}", dateAsString);
},
logStreamName: logStreamName,
logGroupName: logGroupName,
awsRegion: awsRegion,
jsonMessage: true,

View File

@ -1,7 +1,7 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2021
*
* (c) Copyright Ascensio System Limited 2010-2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@ -12,148 +12,64 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
*/
"use strict";
process.env.NODE_ENV = process.env.NODE_ENV || "development";
const fs = require("fs"),
http = require("http"),
express = require("express"),
morgan = require("morgan"),
cookieParser = require("cookie-parser"),
bodyParser = require("body-parser"),
session = require("express-session"),
winston = require("winston"),
WinstonCloudWatch = require('winston-cloudwatch'),
config = require("./config").get(),
path = require("path"),
exphbs = require("express-handlebars"),
favicon = require("serve-favicon"),
cors = require("cors"),
{ randomUUID } = require('crypto'),
date = require('date-and-time'),
os = require("os");
const http = require("http"),
express = require("express"),
morgan = require("morgan"),
cookieParser = require("cookie-parser"),
bodyParser = require("body-parser"),
session = require("express-session"),
winston = require("./app/log.js"),
config = require("./config").get(),
path = require("path"),
exphbs = require("express-handlebars"),
favicon = require("serve-favicon"),
cors = require("cors");
require('winston-daily-rotate-file');
winston.stream = {
write: (message) => winston.info(message),
};
const app = express();
let logpath = config["logPath"];
if(logpath != null)
{
if(!path.isAbsolute(logpath))
{
logpath = path.join(__dirname, logpath);
}
// ensure log directory exists
fs.existsSync(logpath) || fs.mkdirSync(logpath);
}
const aws = config["aws"].cloudWatch;
const accessKeyId = aws.accessKeyId;
const secretAccessKey = aws.secretAccessKey;
const awsRegion = aws.region;
const logGroupName = aws.logGroupName;
const logStreamName = aws.logStreamName;
let transports = [];
if (config.logger.file) {
let logDir = logpath ? logpath : (config.app.logDir[0] === "." ? path.join(__dirname, config.app.logDir) : config.app.logDir);
config.logger.file.filename = path.join(logDir, config.app.logName);
transports.push(new (winston.transports.DailyRotateFile)(config.logger.file));
}
if (config.logger.console) {
transports.push(new (winston.transports.Console)(config.logger.console));
}
if (aws != null && aws.accessKeyId !== '')
{
transports.push(new WinstonCloudWatch({
name: 'aws',
level: "debug",
logStreamName: () => {
const hostname = os.hostname();
const now = new Date();
const guid = randomUUID();
const dateAsString = date.format(now, 'YYYY/MM/DDTHH.mm.ss');
return logStreamName.replace("${hostname}", hostname)
.replace("${applicationContext}", "SsoAuth")
.replace("${guid}", guid)
.replace("${date}", dateAsString);
},
logGroupName: logGroupName,
awsRegion: awsRegion,
jsonMessage: true,
awsOptions: {
credentials: {
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
}
}
}));
}
const customFormat = winston.format(info => {
const now = new Date();
info.date = date.format(now, 'YYYY-MM-DD HH:mm:ss');
info.applicationContext = "SsoAuth";
info.level = info.level.toUpperCase();
const hostname = os.hostname();
info["instance-id"] = hostname;
return info;
})();
let logger = winston.createLogger({
format: winston.format.combine(
customFormat,
winston.format.json()
),
transports: transports,
exitOnError: false
});
logger.stream = {
write: function(message) {
logger.info(message.trim());
}
};
// view engine setup
app.set("views", path.join(__dirname, "views"));
app.engine("handlebars", exphbs({ defaultLayout: "main" }));
app.set("view engine", "handlebars");
app.use(favicon(path.join(__dirname, "public", "favicon.ico")))
.use(morgan("combined", { "stream": logger.stream }))
.use(cookieParser())
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: false }))
.use(session(
{
resave: true,
saveUninitialized: true,
secret: config["core"].machinekey ? config["core"].machinekey : config.app.machinekey
}))
.use(cors());
const machineKey = config["core"].machinekey
? config["core"].machinekey
: config.app.machinekey;
require("./app/middleware/saml")(app, config, logger);
require("./app/routes")(app, config, logger);
app
.use(favicon(path.join(__dirname, "public", "favicon.ico")))
.use(morgan("combined", { stream: winston.stream }))
.use(cookieParser())
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: false }))
.use(
session({
resave: true,
saveUninitialized: true,
secret: machineKey,
})
)
.use(cors());
require("./app/middleware/saml")(app, config);
require("./app/routes")(app, config);
const httpServer = http.createServer(app);
httpServer.listen(config.app.port,
function () {
logger.info(`Start SSO Service Provider listening on port ${config.app.port} for http`);
});
httpServer.listen(config.app.port, function () {
winston.info(
`Start SSO Service Provider listening on port ${config.app.port} ` +
`machineKey='${machineKey}' ` +
`appsettings path='${config.app.appsettings}'`
);
});

View File

@ -0,0 +1,101 @@
const winston = require("winston"),
WinstonCloudWatch = require("winston-cloudwatch");
require("winston-daily-rotate-file");
const path = require("path");
const config = require("../config");
const fs = require("fs");
const os = require("os");
const { randomUUID } = require("crypto");
const date = require("date-and-time");
let logpath = config.get("logPath");
if (logpath != null) {
if (!path.isAbsolute(logpath)) {
logpath = path.join(__dirname, "..", logpath);
}
}
const fileName = logpath
? path.join(logpath, "web.sso.%DATE%.log")
: path.join(__dirname, "..", "..", "..", "Logs", "web.sso.%DATE%.log");
const dirName = path.dirname(fileName);
const aws = config.get("aws").cloudWatch;
const accessKeyId = aws.accessKeyId;
const secretAccessKey = aws.secretAccessKey;
const awsRegion = aws.region;
const logGroupName = aws.logGroupName;
const logStreamName = aws.logStreamName
.replace("${hostname}", os.hostname())
.replace("${applicationContext}", "SsoAuth")
.replace("${guid}", randomUUID())
.replace("${date}", date.format(new Date(), "YYYY/MM/DDTHH.mm.ss"));
if (!fs.existsSync(dirName)) {
fs.mkdirSync(dirName);
}
var options = {
file: {
filename: fileName,
datePattern: "MM-DD",
handleExceptions: true,
humanReadableUnhandledException: true,
zippedArchive: true,
maxSize: "50m",
maxFiles: "30d",
json: true,
},
console: {
level: "debug",
handleExceptions: true,
json: false,
colorize: true,
},
cloudWatch: {
name: "aws",
level: "debug",
logStreamName: logStreamName,
logGroupName: logGroupName,
awsRegion: awsRegion,
jsonMessage: true,
awsOptions: {
credentials: {
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey,
},
},
},
};
let transports = [
new winston.transports.Console(options.console),
new winston.transports.DailyRotateFile(options.file),
];
if (aws != null && aws.accessKeyId !== "") {
transports.push(new WinstonCloudWatch(options.cloudWatch));
}
const customFormat = winston.format((info) => {
const now = new Date();
info.date = date.format(now, "YYYY-MM-DD HH:mm:ss");
info.applicationContext = "SsoAuth";
info.level = info.level.toUpperCase();
const hostname = os.hostname();
info["instance-id"] = hostname;
return info;
})();
module.exports = new winston.createLogger({
format: winston.format.combine(customFormat, winston.format.json()),
transports: transports,
exitOnError: false,
});

View File

@ -1,7 +1,7 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2021
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@ -12,18 +12,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
*/
"use strict";
module.exports = (app, config, logger) => {
const urlResolver = require("../utils/resolver")(logger);
module.exports = (app, config) => {
const logger = require("../log.js");
const urlResolver = require("../utils/resolver")();
const coder = require("../utils/coder");
const converter = require("../utils/converter")(logger);
const converter = require("../utils/converter")();
const _ = require("lodash");
const fetch = require("node-fetch");
const routes = _.values(config.routes);
const machineKey = config["core"].machinekey
? config["core"].machinekey
: config.app.machinekey;
const fetchConfig = async (req, res, next) => {
const foundRoutes =
@ -33,9 +36,9 @@ module.exports = (app, config, logger) => {
})
: [];
if(req.originalUrl =="/isLife") {
res.sendStatus(200);
return;
if (req.originalUrl == "/isLife") {
res.sendStatus(200);
return;
}
if (!foundRoutes.length) {
@ -63,7 +66,7 @@ module.exports = (app, config, logger) => {
const text = await response.text();
const ssoConfig = coder.decodeData(text);
const ssoConfig = coder.decodeData(text, machineKey);
const idp = converter.toIdp(ssoConfig);

View File

@ -17,10 +17,11 @@
"use strict";
module.exports = function (app, config, logger) {
module.exports = function (app, config) {
const saml = require("samlify");
const { SamlLib: libsaml } = saml;
const urlResolver = require("./utils/resolver")(logger);
const logger = require("./log.js");
const urlResolver = require("./utils/resolver")();
const coder = require("./utils/coder");
const urn = require("samlify/build/src/urn");
const fetch = require("node-fetch");
@ -32,8 +33,10 @@ module.exports = function (app, config, logger) {
const UserModel = require("./model/user");
const LogoutModel = require("./model/logout");
const fs = require('fs');
let uploadDir = "";
const selfSignedDomain = "myselfsigned.crt";
const machineKey = config["core"].machinekey ? config["core"].machinekey : config.app.machinekey;
function verifySetting(req) {
if (!req.providersInfo.settings.EnableSso) {
@ -396,13 +399,14 @@ module.exports = function (app, config, logger) {
req.providersInfo.mapping
);
logger.info(`SSO User ${JSON.stringify(user)}`);
logger.info(`SSO User ${JSON.stringify(user)} machineKey=${machineKey}`);
// Use the parseResult can do customized action
const data = coder.encodeData(user);
const data = coder.encodeData(user, machineKey);
if (!data) {
logger.error("coder.encodeData", user);
logger.error("EncodeData response is EMPTY", user, machineKey);
return res.redirect(
urlResolver.getPortalAuthErrorUrl(
req,
@ -511,10 +515,14 @@ module.exports = function (app, config, logger) {
const relayState = urlResolver.getPortalAuthUrl(req);
const userData = coder.decodeData(req.query["data"]);
const queryData = req.query["data"];
logger.info(`sendLogoutRequest: data: ${queryData} machineKey=${machineKey}`);
const userData = coder.decodeData(queryData, machineKey);
if (!userData) {
logger.error(`coder.decodeData ${req.query["data"]}`);
logger.error("DecodeData response is EMPTY", queryData, machineKey);
return res.redirect(urlResolver.getPortal500Url(req));
}
@ -599,11 +607,12 @@ module.exports = function (app, config, logger) {
const sendPortalLogout = async (user, req) => {
try {
const data = coder.encodeData(user);
logger.info(`sendPortalLogout: SSO User ${JSON.stringify(user)} machineKey=${machineKey}`);
const data = coder.encodeData(user, machineKey);
if (!data) {
const errorMessage = `EncodeData is EMPTY`;
throw new Error(errorMessage);
throw new Error("EncodeData response is EMPTY", user, machineKey);
//return res.redirect(urlResolver.getPortal500Url(req));
}

View File

@ -17,26 +17,25 @@
"use strict";
const config = require("../../config").get(),
hash = require("./hash");
const hash = require("./hash");
var Coder = function() {
return {
encodeData: function(data) {
encodeData: function(data, machinekey) {
if (!data && typeof (data) !== "object")
return undefined;
const jsonStr = JSON.stringify(data);
const dataEncoded = hash.encode(jsonStr, config["machinekey"] ? config["core"].machinekey : config.app.machinekey);
const dataEncoded = hash.encode(jsonStr, machinekey);
return dataEncoded;
},
decodeData: function(data) {
decodeData: function(data, machinekey) {
if (!data && typeof (data) !== "string")
return undefined;
const jsonStr = hash.decode(data, config["core"].machinekey ? config["core"].machinekey : config.app.machinekey);
const jsonStr = hash.decode(data, machinekey);
const dataDecoded = JSON.parse(jsonStr);
return dataDecoded;

View File

@ -25,6 +25,7 @@ const _ = require("lodash");
const fs = require("fs");
const path = require("path");
const minifyXML = require("minify-xml").minify;
const logger = require("../log.js");
saml.setSchemaValidator(validator);
@ -33,7 +34,7 @@ const IdentityProvider = saml.IdentityProvider;
const templDir = path.join(process.cwd(),"../../common/ASC.SsoAuth", "/app/templates/");
module.exports = function (logger) {
module.exports = function () {
function removeCertHead(cert) {
var newCert = cert;
if (cert && cert[0] === "-") {
@ -283,5 +284,3 @@ module.exports = function (logger) {
},
};
};
//module.exports = Converter(logger);

View File

@ -1,7 +1,7 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2021
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@ -12,73 +12,64 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
*/
"use strict";
const logger = require("../log.js");
var Hash = function () {
var getHashBase64 = function (str) {
const crypto = require("crypto");
const sha256 = crypto.createHash("sha256");
sha256.update(str, "utf8");
const result = sha256.digest("base64");
return result;
};
var getHashBase64 = function (str) {
const crypto = require("crypto");
const sha256 = crypto.createHash("sha256");
sha256.update(str, "utf8");
const result = sha256.digest("base64");
return result;
};
return {
encode: function(str, secret) {
try {
const strHash = getHashBase64(str + secret) + "?" + str;
return {
encode: function (str, secret) {
try {
const strHash = getHashBase64(str + secret) + "?" + str;
let data = new Buffer(strHash).toString("base64");
let data = Buffer.from(strHash).toString("base64");
let cnt = 0;
while (data.indexOf("=") !== -1) {
cnt++;
data = data.replace("=", "");
}
data = data.replace(/\+/g, "-").replace(/\//g, "_");
data = (data + cnt).replace(/\+/g, "-").replace(/\//g, "_");
return data;
} catch (ex) {
logger?.error("hash.encode", str, secret, ex);
return null;
}
},
decode: function (str, secret) {
try {
let strDecoded = Buffer.from(unescape(str), "base64").toString();
return data;
const lastIndex = strDecoded.lastIndexOf("}");
} catch (ex) {
return null;
}
},
decode: function(str, secret) {
try {
let strDecoded = Buffer.from(unescape(str), "base64").toString();
const lastIndex = strDecoded.lastIndexOf("}");
if (lastIndex + 1 < strDecoded.length) {
strDecoded = strDecoded.substring(0, lastIndex + 1);
}
const index = strDecoded.indexOf("?");
if (index > 0 && strDecoded[index + 1] == '{') {
let hash = strDecoded.substring(0, index);
let data = strDecoded.substring(index + 1);
if(getHashBase64(data + secret) === hash)
{
return data;
}
}
// Sig incorrect
return null;
} catch (ex) {
console.error("hash.decode", str, secret, ex);
return null;
}
if (lastIndex + 1 < strDecoded.length) {
strDecoded = strDecoded.substring(0, lastIndex + 1);
}
};
const index = strDecoded.indexOf("?");
if (index > 0 && strDecoded[index + 1] == "{") {
let hash = strDecoded.substring(0, index);
let data = strDecoded.substring(index + 1);
if (getHashBase64(data + secret) === hash) {
return data;
}
}
// Sig incorrect
return null;
} catch (ex) {
logger?.error("hash.decode", str, secret, ex);
return null;
}
},
};
};
module.exports = Hash();

View File

@ -18,11 +18,11 @@
"use strict";
const config = require("../../config").get(),
// ReSharper disable once InconsistentNaming
URL = require("url");
logger = require("../log.js");
URL = require("url");
// ReSharper disable once InconsistentNaming
module.exports = function (logger) {
module.exports = function () {
function getBaseUrl(req) {
const url = req.headers["x-rewriter-url"] || req.protocol + "://" + req.get("host");

View File

@ -72,7 +72,10 @@ const accessKeyId = aws.accessKeyId;
const secretAccessKey = aws.secretAccessKey;
const awsRegion = aws.region;
const logGroupName = aws.logGroupName;
const logStreamName = aws.logStreamName;
const logStreamName = aws.logStreamName.replace("${hostname}", os.hostname())
.replace("${applicationContext}", "WebDav")
.replace("${guid}", randomUUID())
.replace("${date}", date.format(new Date(), 'YYYY/MM/DDTHH.mm.ss'));
let transports = [
new (winston.transports.Console)(),
@ -85,17 +88,7 @@ if (aws != null && aws.accessKeyId !== '')
transports.push(new WinstonCloudWatch({
name: 'aws',
level: "debug",
logStreamName: () => {
const hostname = os.hostname();
const now = new Date();
const guid = randomUUID();
const dateAsString = date.format(now, 'YYYY/MM/DDTHH.mm.ss');
return logStreamName.replace("${hostname}", hostname)
.replace("${applicationContext}", "WebDav")
.replace("${guid}", guid)
.replace("${date}", dateAsString);
},
logStreamName: logStreamName,
logGroupName: logGroupName,
awsRegion: awsRegion,
jsonMessage: true,

View File

@ -32,7 +32,10 @@ const accessKeyId = aws.accessKeyId;
const secretAccessKey = aws.secretAccessKey;
const awsRegion = aws.region;
const logGroupName = aws.logGroupName;
const logStreamName = aws.logStreamName;
const logStreamName = aws.logStreamName.replace("${hostname}", os.hostname())
.replace("${applicationContext}", "WebPlugins")
.replace("${guid}", randomUUID())
.replace("${date}", date.format(new Date(), 'YYYY/MM/DDTHH.mm.ss'));
const options = {
file: {
@ -54,18 +57,8 @@ const options = {
cloudWatch: {
name: 'aws',
level: "debug",
logStreamName: () => {
const hostname = os.hostname();
const now = new Date();
const guid = randomUUID();
const dateAsString = date.format(now, 'YYYY/MM/DDTHH.mm.ss');
return logStreamName.replace("${hostname}", hostname)
.replace("${applicationContext}", "WebPlugins")
.replace("${guid}", guid)
.replace("${date}", dateAsString);
},
logGroupName:logGroupName,
logStreamName: logStreamName,
logGroupName: logGroupName,
awsRegion: awsRegion,
jsonMessage: true,
awsOptions: {

View File

@ -56,6 +56,20 @@ public class LocalesTest
}
}
public static bool Save
{
get
{
bool save;
if (bool.TryParse(Environment.GetEnvironmentVariable("SAVE"), out save))
{
return save;
}
return false;
}
}
public List<string> Workspaces { get; set; }
public List<TranslationFile> TranslationFiles { get; set; }
public List<JavaScriptFile> JavaScriptFiles { get; set; }
@ -69,13 +83,19 @@ public class LocalesTest
//public List<JsonEncodingError> WrongEncodingJsonErrors { get; set; }
private static readonly string _md5ExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../md5-excludes.json"));
private static readonly string _spellCheckCommonExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../spellcheck-excludes-common.json"));
private static readonly string _spellCheckExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../spellcheck-excludes.json"));
//private static string _encodingExcludesPath = "../../../encoding-excludes.json";
private static readonly List<string> _md5Excludes = File.Exists(_md5ExcludesPath)
private static readonly List<string> Md5Excludes = File.Exists(_md5ExcludesPath)
? JsonConvert.DeserializeObject<List<string>>(File.ReadAllText(_md5ExcludesPath))
: new List<string>();
private static readonly List<string> SpellCheckCommonExcludes = File.Exists(_spellCheckCommonExcludesPath)
? JsonConvert.DeserializeObject<List<string>>(File.ReadAllText(_spellCheckCommonExcludesPath))
: new List<string>();
//private static List<string> encodingExcludes = File.Exists(_encodingExcludesPath)
// ? JsonConvert.DeserializeObject<List<string>>(File.ReadAllText(_encodingExcludesPath))
// : new List<string>();
@ -334,7 +354,11 @@ public class LocalesTest
TestContext.Progress.WriteLine($"Found CommonTranslations = {CommonTranslations.Count()}. First path is '{CommonTranslations.FirstOrDefault()?.Path}'");
TestContext.Progress.WriteLine($"Found _md5Excludes = {_md5Excludes.Count()} Path to file '{_md5ExcludesPath}'");
TestContext.Progress.WriteLine($"Found Md5Excludes = {Md5Excludes.Count} Path to file '{_md5ExcludesPath}'");
TestContext.Progress.WriteLine($"Found SpellCheckCommonExcludes = {SpellCheckCommonExcludes.Count} Path to file '{_spellCheckCommonExcludesPath}'");
TestContext.Progress.WriteLine($"Save spell check excludes = {Save} Path to file '{_spellCheckExcludesPath}'");
}
@ -375,7 +399,7 @@ public class LocalesTest
var errorsCount = 0;
var message = $"Next keys have spell check issues:\r\n\r\n";
//var list = new List<SpellCheckExclude>();
var list = new List<SpellCheckExclude>();
var groupByLng = TranslationFiles
.GroupBy(t => t.Language)
@ -392,7 +416,7 @@ public class LocalesTest
{
var dicPaths = SpellCheck.GetDictionaryPaths(group.Language);
//var spellCheckExclude = new SpellCheckExclude(group.Language);
var spellCheckExclude = new SpellCheckExclude(group.Language);
using (var dictionaryStream = File.OpenRead(dicPaths.DictionaryPath))
using (var affixStream = File.OpenRead(dicPaths.AffixPath))
@ -407,27 +431,44 @@ public class LocalesTest
if (result.HasProblems)
{
message += $"{++i}. lng='{group.Language}' file='{g.FilePath}'\r\nkey='{item.Key}' value='{item.Value}'\r\nIncorrect words:\r\n{string.Join("\r\n", result.SpellIssues.Select(issue => $"'{issue.Word}' Suggestion: '{issue.Suggestions.FirstOrDefault()}'"))}\r\n\r\n";
var incorrectWords = result.SpellIssues
.Where(t => !SpellCheckCommonExcludes
.Exists(e => e.Equals(t.Word, StringComparison.InvariantCultureIgnoreCase)))
.Select(issue => $"'{issue.Word}' " +
$"Suggestion: '{issue.Suggestions.FirstOrDefault()}'")
.ToList();
if (!incorrectWords.Any())
continue;
message += $"{++i}. lng='{group.Language}' file='{g.FilePath}'\r\nkey='{item.Key}' " +
$"value='{item.Value}'\r\nIncorrect words:\r\n" +
$"{string.Join("\r\n", incorrectWords)}\r\n\r\n";
errorsCount++;
/*foreach (var word in result.SpellIssues
if (Save)
{
foreach (var word in result.SpellIssues
.Where(issue => issue.Suggestions.Any())
.Select(issue => issue.Word))
{
if (!spellCheckExclude.Excludes.Contains(word))
{
spellCheckExclude.Excludes.Add(word);
}
}*/
.Select(issue => issue.Word))
{
if (!spellCheckExclude.Excludes.Contains(word))
{
spellCheckExclude.Excludes.Add(word);
}
}
}
}
}
}
}
//spellCheckExclude.Excludes.Sort();
//list.Add(spellCheckExclude);
if (Save)
{
spellCheckExclude.Excludes.Sort();
list.Add(spellCheckExclude);
}
}
catch (NotSupportedException)
{
@ -436,8 +477,12 @@ public class LocalesTest
}
}
//string json = JsonConvert.SerializeObject(list, Formatting.Indented);
//File.WriteAllText("../../../spellcheck-excludes.json", json, Encoding.UTF8);
if (Save)
{
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
File.WriteAllText(_spellCheckExcludesPath, json, Encoding.UTF8);
TestContext.Progress.WriteLine($"File spellcheck-excludes.json has been saved to '{_spellCheckExcludesPath}'");
}
Assert.AreEqual(0, errorsCount, message);
}
@ -459,7 +504,7 @@ public class LocalesTest
{
var duplicatesByMD5 = TranslationFiles
.Where(t => t.Language != "pt-BR")
.Where(t => !_md5Excludes.Contains(t.Md5Hash))
.Where(t => !Md5Excludes.Contains(t.Md5Hash))
.GroupBy(t => t.Md5Hash)
.Where(grp => grp.Count() > 1)
.Select(grp => new { Key = grp.Key, Count = grp.Count(), Paths = grp.ToList().Select(f => f.FilePath) })
@ -763,7 +808,10 @@ public class LocalesTest
continue;
}
var exepts = new List<string> { "Error", "Done", "Warning", "Alert", "Info" };
var notCommonKeys = module.AppliedJsTranslationKeys
.Except(exepts)
.Where(k => !k.StartsWith("Common:"))
.OrderBy(t => t)
.ToList();

View File

@ -0,0 +1,20 @@
[
"Amazon",
"AWS",
"DocSpace",
"ONLYOFFICE",
"ID",
"IP",
"IPv4",
"IPv",
"DNS",
"SVG",
"PNG",
"NameId",
"IdP",
"Sp",
"macOS",
"SAML",
"Stripe",
"SDK"
]

View File

@ -69,15 +69,15 @@
"enable": [ "box", "dropboxv2", "docusign", "google", "onedrive", "sharepoint", "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", ".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" ],
"coauthor-docs": [ ".pptx", ".ppsx", ".xlsx", ".csv", ".docx", ".docxf", ".oform", ".txt" ],
"commented-docs": [ ".docx", ".docxf", ".xlsx", ".pptx" ],
"convert-docs": [ ".pptm", ".ppt", ".ppsm", ".pps", ".potx", ".potm", ".pot", ".odp", ".fodp", ".otp", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".docm", ".doc", ".dotx", ".dotm", ".dot", ".odt", ".fodt", ".ott", ".rtf", ".xml" ],
"edited-docs": [ ".pptx", ".pptm", ".ppt", ".ppsx", ".ppsm", ".pps", ".potx", ".potm", ".pot", ".odp", ".fodp", ".otp", ".xlsx", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".csv", ".docx", ".docxf", ".oform", ".docm", ".doc", ".dotx", ".dotm", ".dot", ".odt", ".fodt", ".ott", ".txt", ".rtf", ".mht", ".html", ".htm" ],
"encrypted-docs": [ ".docx", ".docxf", ".xlsx", ".pptx", ".oform" ],
"formfilling-docs": [ ".oform" ],
"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": [ ".xlsx" ],
"reviewed-docs": [ ".docx", ".docxf" ],
"viewed-docs": [ ".pptx", ".pptm", ".ppt", ".ppsx", ".ppsm", ".pps", ".potx", ".potm", ".pot", ".odp", ".fodp", ".otp", ".gslides", ".xlsx", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".gsheet", ".csv", ".docx", ".docxf", ".oform", ".docm", ".doc", ".dotx", ".dotm", ".dot", ".odt", ".fodt", ".ott", ".gdoc", ".txt", ".rtf", ".mht", ".html", ".htm", ".xml", ".fb2", ".epub", ".pdf", ".djvu", ".xps", ".oxps" ],
"secret": {
"value": "secret",
"header": "AuthorizationJwt"
@ -136,20 +136,10 @@
"name": "default",
"connectionString": "Server=localhost;Database=docspace;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;AllowPublicKeyRetrieval=True;Connection Timeout=30;Maximum Pool Size=300;ConnectionReset=false",
"providerName": "MySql.Data.MySqlClient"
},
"postgre": {
"name": "postgre",
"connectionString": "Host=localhost;Port=5432;Database=docspace;Username=postgres;Password=dev;",
"providerName": "Npgsql"
},
"mysql": {
"name": "mysql",
"connectionString": "Server=localhost;Database=docspace;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;AllowPublicKeyRetrieval=True;Connection Timeout=30;Maximum Pool Size=300;ConnectionReset=false",
"providerName": "MySql.Data.MySqlClient"
},
"teamlabsite": {
"name": "docspacesite",
"connectionString": "Server=localhost;Database=docspacesite;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;AllowPublicKeyRetrieval=True;Connection Timeout=30;Maximum Pool Size=300;ConnectionReset=false",
"name": "teamlabsite",
"connectionString": "Server=localhost;Database=teamlabsite;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;AllowPublicKeyRetrieval=True;Connection Timeout=30;Maximum Pool Size=300;ConnectionReset=false",
"providerName": "MySql.Data.MySqlClient"
}
},

View File

@ -191,7 +191,9 @@ server {
location ~* /(authentication|modules|portal|security|settings|smtpsettings|capabilities|thirdparty|encryption|feed) {
proxy_pass http://127.0.0.1:5000;
proxy_set_header X-REWRITER-URL $X_REWRITER_URL;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
location ~* portal/(.*)(backup|restore)(.*) {
rewrite (.*)/portal/(.*) $1/backup/$2 break;
proxy_redirect off;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

6
licenses.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
isValidLicense: (license) => {
const valid = new RegExp("\\b(mit|apache\\b.*2|bsd|isc|unlicense)\\b", "i");
return valid.test(license);
},
};

View File

@ -362,355 +362,412 @@ public partial class FilesDbContextMigrate : Migration
table: "files_converts",
columns: new[] { "input", "output" },
values: new object[,]
{
{ ".csv", ".ods" },
{ ".csv", ".ots" },
{ ".csv", ".pdf" },
{ ".csv", ".xlsm" },
{ ".csv", ".xlsx" },
{ ".csv", ".xltm" },
{ ".csv", ".xltx" },
{ ".doc", ".docm" },
{ ".doc", ".docx" },
{ ".doc", ".dotm" },
{ ".doc", ".dotx" },
{ ".doc", ".epub" },
{ ".doc", ".fb2" },
{ ".doc", ".html" },
{ ".doc", ".odt" },
{ ".doc", ".ott" },
{ ".doc", ".pdf" },
{ ".doc", ".rtf" },
{ ".doc", ".txt" },
{ ".docm", ".docx" },
{ ".docm", ".dotm" },
{ ".docm", ".dotx" },
{ ".docm", ".epub" },
{ ".docm", ".fb2" },
{ ".docm", ".html" },
{ ".docm", ".odt" },
{ ".docm", ".ott" },
{ ".docm", ".pdf" },
{ ".docm", ".rtf" },
{ ".docm", ".txt" },
{ ".doct", ".docx" },
{ ".docx", ".docm" },
{ ".docx", ".docxf" },
{ ".docx", ".dotm" },
{ ".docx", ".dotx" },
{ ".docx", ".epub" },
{ ".docx", ".fb2" },
{ ".docx", ".html" },
{ ".docx", ".odt" },
{ ".docx", ".ott" },
{ ".docx", ".pdf" },
{ ".docx", ".rtf" },
{ ".docx", ".txt" },
{ ".docxf", ".docx" },
{ ".docxf", ".dotx" },
{ ".docxf", ".epub" },
{ ".docxf", ".fb2" },
{ ".docxf", ".html" },
{ ".docxf", ".odt" },
{ ".docxf", ".oform" },
{ ".docxf", ".ott" },
{ ".docxf", ".pdf" },
{ ".docxf", ".rtf" },
{ ".docxf", ".txt" },
{ ".dot", ".docm" },
{ ".dot", ".docx" },
{ ".dot", ".dotm" },
{ ".dot", ".dotx" },
{ ".dot", ".epub" },
{ ".dot", ".fb2" },
{ ".dot", ".html" },
{ ".dot", ".odt" },
{ ".dot", ".ott" },
{ ".dot", ".pdf" },
{ ".dot", ".rtf" },
{ ".dot", ".txt" },
{ ".dotm", ".docm" },
{ ".dotm", ".docx" },
{ ".dotm", ".dotx" },
{ ".dotm", ".epub" },
{ ".dotm", ".fb2" },
{ ".dotm", ".html" },
{ ".dotm", ".odt" },
{ ".dotm", ".ott" },
{ ".dotm", ".pdf" },
{ ".dotm", ".rtf" },
{ ".dotm", ".txt" },
{ ".dotx", ".docm" },
{ ".dotx", ".docx" },
{ ".dotx", ".dotm" },
{ ".dotx", ".epub" },
{ ".dotx", ".fb2" },
{ ".dotx", ".html" },
{ ".dotx", ".odt" },
{ ".dotx", ".ott" },
{ ".dotx", ".pdf" },
{ ".dotx", ".rtf" },
{ ".dotx", ".txt" },
{ ".epub", ".docm" },
{ ".epub", ".docx" },
{ ".epub", ".dotm" },
{ ".epub", ".dotx" },
{ ".epub", ".fb2" },
{ ".epub", ".html" },
{ ".epub", ".odt" },
{ ".epub", ".ott" },
{ ".epub", ".pdf" },
{ ".epub", ".rtf" },
{ ".epub", ".txt" },
{ ".fb2", ".docm" },
{ ".fb2", ".docx" },
{ ".fb2", ".dotm" },
{ ".fb2", ".dotx" },
{ ".fb2", ".epub" },
{ ".fb2", ".html" },
{ ".fb2", ".odt" },
{ ".fb2", ".ott" },
{ ".fb2", ".pdf" },
{ ".fb2", ".rtf" },
{ ".fb2", ".txt" },
{ ".fodp", ".odp" },
{ ".fodp", ".otp" },
{ ".fodp", ".pdf" },
{ ".fodp", ".potm" },
{ ".fodp", ".potx" },
{ ".fodp", ".pptm" },
{ ".fodp", ".pptx" },
{ ".fods", ".csv" },
{ ".fods", ".ods" },
{ ".fods", ".ots" },
{ ".fods", ".pdf" },
{ ".fods", ".xlsm" },
{ ".fods", ".xlsx" },
{ ".fods", ".xltm" },
{ ".fods", ".xltx" },
{ ".fodt", ".docm" },
{ ".fodt", ".docx" },
{ ".fodt", ".dotm" },
{ ".fodt", ".dotx" },
{ ".fodt", ".epub" },
{ ".fodt", ".fb2" },
{ ".fodt", ".html" },
{ ".fodt", ".odt" },
{ ".fodt", ".ott" },
{ ".fodt", ".pdf" },
{ ".fodt", ".rtf" },
{ ".fodt", ".txt" },
{ ".html", ".docm" },
{ ".html", ".docx" },
{ ".html", ".dotm" },
{ ".html", ".dotx" },
{ ".html", ".epub" },
{ ".html", ".fb2" },
{ ".html", ".odt" },
{ ".html", ".ott" },
{ ".html", ".pdf" },
{ ".html", ".rtf" },
{ ".html", ".txt" },
{ ".mht", ".docm" },
{ ".mht", ".docx" },
{ ".mht", ".dotm" },
{ ".mht", ".dotx" },
{ ".mht", ".epub" },
{ ".mht", ".fb2" },
{ ".mht", ".odt" },
{ ".mht", ".ott" },
{ ".mht", ".pdf" },
{ ".mht", ".rtf" },
{ ".mht", ".txt" },
{ ".odp", ".otp" },
{ ".odp", ".pdf" },
{ ".odp", ".potm" },
{ ".odp", ".potx" },
{ ".odp", ".pptm" },
{ ".odp", ".pptx" },
{ ".ods", ".csv" },
{ ".ods", ".ots" },
{ ".ods", ".pdf" },
{ ".ods", ".xlsm" },
{ ".ods", ".xlsx" },
{ ".ods", ".xltm" },
{ ".ods", ".xltx" },
{ ".odt", ".docm" },
{ ".odt", ".docx" },
{ ".odt", ".dotm" },
{ ".odt", ".dotx" },
{ ".odt", ".epub" },
{ ".odt", ".fb2" },
{ ".odt", ".html" },
{ ".odt", ".ott" },
{ ".odt", ".pdf" },
{ ".odt", ".rtf" },
{ ".odt", ".txt" },
{ ".otp", ".odp" },
{ ".otp", ".pdf" },
{ ".otp", ".potm" },
{ ".otp", ".potx" },
{ ".otp", ".pptm" },
{ ".otp", ".pptx" },
{ ".ots", ".csv" },
{ ".ots", ".ods" },
{ ".ots", ".pdf" },
{ ".ots", ".xlsm" },
{ ".ots", ".xlsx" },
{ ".ots", ".xltm" },
{ ".ots", ".xltx" },
{ ".ott", ".docm" },
{ ".ott", ".docx" },
{ ".ott", ".dotm" },
{ ".ott", ".dotx" },
{ ".ott", ".epub" },
{ ".ott", ".fb2" },
{ ".ott", ".html" },
{ ".ott", ".odt" },
{ ".ott", ".pdf" },
{ ".ott", ".rtf" },
{ ".ott", ".txt" },
{ ".oxps", ".pdf" },
{ ".pot", ".odp" },
{ ".pot", ".otp" },
{ ".pot", ".pdf" },
{ ".pot", ".potm" },
{ ".pot", ".potx" },
{ ".pot", ".pptm" },
{ ".pot", ".pptx" },
{ ".potm", ".odp" },
{ ".potm", ".otp" },
{ ".potm", ".pdf" },
{ ".potm", ".potx" },
{ ".potm", ".pptm" },
{ ".potm", ".pptx" },
{ ".potx", ".odp" },
{ ".potx", ".otp" },
{ ".potx", ".pdf" },
{ ".potx", ".potm" },
{ ".potx", ".pptm" },
{ ".potx", ".pptx" },
{ ".pps", ".odp" },
{ ".pps", ".otp" },
{ ".pps", ".pdf" },
{ ".pps", ".potm" },
{ ".pps", ".potx" },
{ ".pps", ".pptm" },
{ ".pps", ".pptx" },
{ ".ppsm", ".odp" },
{ ".ppsm", ".otp" },
{ ".ppsm", ".pdf" },
{ ".ppsm", ".potm" },
{ ".ppsm", ".potx" },
{ ".ppsm", ".pptm" },
{ ".ppsm", ".pptx" },
{ ".ppsx", ".odp" },
{ ".ppsx", ".otp" },
{ ".ppsx", ".pdf" },
{ ".ppsx", ".potm" },
{ ".ppsx", ".potx" },
{ ".ppsx", ".pptm" },
{ ".ppsx", ".pptx" },
{ ".ppt", ".odp" },
{ ".ppt", ".otp" },
{ ".ppt", ".pdf" },
{ ".ppt", ".potm" },
{ ".ppt", ".potx" },
{ ".ppt", ".pptm" },
{ ".ppt", ".pptx" },
{ ".pptm", ".odp" },
{ ".pptm", ".otp" },
{ ".pptm", ".pdf" },
{ ".pptm", ".potm" },
{ ".pptm", ".potx" },
{ ".pptm", ".pptx" },
{ ".pptt", ".pptx" },
{ ".pptx", ".odp" },
{ ".pptx", ".otp" },
{ ".pptx", ".pdf" },
{ ".pptx", ".potm" },
{ ".pptx", ".potx" },
{ ".pptx", ".pptm" },
{ ".rtf", ".docm" },
{ ".rtf", ".docx" },
{ ".rtf", ".dotm" },
{ ".rtf", ".dotx" },
{ ".rtf", ".epub" },
{ ".rtf", ".fb2" },
{ ".rtf", ".html" },
{ ".rtf", ".odt" },
{ ".rtf", ".ott" },
{ ".rtf", ".pdf" },
{ ".rtf", ".txt" },
{ ".txt", ".docm" },
{ ".txt", ".docx" },
{ ".txt", ".dotm" },
{ ".txt", ".dotx" },
{ ".txt", ".epub" },
{ ".txt", ".fb2" },
{ ".txt", ".html" },
{ ".txt", ".odt" },
{ ".txt", ".ott" },
{ ".txt", ".pdf" },
{ ".txt", ".rtf" },
{ ".xls", ".csv" },
{ ".xls", ".ods" },
{ ".xls", ".ots" },
{ ".xls", ".pdf" },
{ ".xls", ".xlsm" },
{ ".xls", ".xlsx" },
{ ".xls", ".xltm" },
{ ".xls", ".xltx" },
{ ".xlsm", ".csv" },
{ ".xlsm", ".ods" },
{ ".xlsm", ".ots" },
{ ".xlsm", ".pdf" },
{ ".xlsm", ".xlsx" },
{ ".xlsm", ".xltm" },
{ ".xlsm", ".xltx" },
{ ".xlst", ".xlsx" },
{ ".xlsx", ".csv" },
{ ".xlsx", ".ods" },
{ ".xlsx", ".ots" },
{ ".xlsx", ".pdf" },
{ ".xlsx", ".xlsm" },
{ ".xlsx", ".xltm" },
{ ".xlsx", ".xltx" },
{ ".xlt", ".csv" },
{ ".xlt", ".ods" },
{ ".xlt", ".ots" },
{ ".xlt", ".pdf" },
{ ".xlt", ".xlsm" },
{ ".xlt", ".xlsx" },
{ ".xlt", ".xltm" },
{ ".xlt", ".xltx" },
{ ".xltm", ".csv" },
{ ".xltm", ".ods" },
{ ".xltm", ".ots" },
{ ".xltm", ".pdf" },
{ ".xltm", ".xlsm" },
{ ".xltm", ".xlsx" },
{ ".xltm", ".xltx" },
{ ".xltx", ".csv" },
{ ".xltx", ".ods" },
{ ".xltx", ".ots" },
{ ".xltx", ".pdf" },
{ ".xltx", ".xlsm" },
{ ".xltx", ".xlsx" },
{ ".xltx", ".xltm" },
{ ".xml", ".docm" },
{ ".xml", ".docx" },
{ ".xml", ".dotm" },
{ ".xml", ".dotx" },
{ ".xml", ".epub" },
{ ".xml", ".fb2" },
{ ".xml", ".html" },
{ ".xml", ".odt" },
{ ".xml", ".ott" },
{ ".xml", ".pdf" },
{ ".xml", ".rtf" },
{ ".xml", ".txt" },
{ ".xps", ".pdf" }
{
{ ".csv", ".ods "},
{ ".csv", ".ots "},
{ ".csv", ".pdf "},
{ ".csv", ".xlsm "},
{ ".csv", ".xlsx "},
{ ".csv", ".xltm "},
{ ".csv", ".xltx "},
{ ".doc", ".docm "},
{ ".doc", ".docx "},
{ ".doc", ".dotm "},
{ ".doc", ".dotx "},
{ ".doc", ".epub "},
{ ".doc", ".fb2 "},
{ ".doc", ".html "},
{ ".doc", ".odt "},
{ ".doc", ".ott "},
{ ".doc", ".pdf "},
{ ".doc", ".rtf "},
{ ".doc", ".txt "},
{ ".docm", ".docx "},
{ ".docm", ".dotm "},
{ ".docm", ".dotx "},
{ ".docm", ".epub "},
{ ".docm", ".fb2 "},
{ ".docm", ".html "},
{ ".docm", ".odt "},
{ ".docm", ".ott "},
{ ".docm", ".pdf "},
{ ".docm", ".rtf "},
{ ".docm", ".txt "},
{ ".doct", ".docx "},
{ ".docx", ".docm "},
{ ".docx", ".docxf "},
{ ".docx", ".dotm "},
{ ".docx", ".dotx "},
{ ".docx", ".epub "},
{ ".docx", ".fb2 "},
{ ".docx", ".html "},
{ ".docx", ".odt "},
{ ".docx", ".ott "},
{ ".docx", ".pdf "},
{ ".docx", ".rtf "},
{ ".docx", ".txt "},
{ ".docxf", ".docm "},
{ ".docxf", ".docx "},
{ ".docxf", ".dotm "},
{ ".docxf", ".dotx "},
{ ".docxf", ".epub "},
{ ".docxf", ".fb2 "},
{ ".docxf", ".html "},
{ ".docxf", ".odt "},
{ ".docxf", ".oform "},
{ ".docxf", ".ott "},
{ ".docxf", ".pdf "},
{ ".docxf", ".rtf "},
{ ".docxf", ".txt "},
{ ".dot", ".docm "},
{ ".dot", ".docx "},
{ ".dot", ".dotm "},
{ ".dot", ".dotx "},
{ ".dot", ".epub "},
{ ".dot", ".fb2 "},
{ ".dot", ".html "},
{ ".dot", ".odt "},
{ ".dot", ".ott "},
{ ".dot", ".pdf "},
{ ".dot", ".rtf "},
{ ".dot", ".txt "},
{ ".dotm", ".docm "},
{ ".dotm", ".docx "},
{ ".dotm", ".dotx "},
{ ".dotm", ".epub "},
{ ".dotm", ".fb2 "},
{ ".dotm", ".html "},
{ ".dotm", ".odt "},
{ ".dotm", ".ott "},
{ ".dotm", ".pdf "},
{ ".dotm", ".rtf "},
{ ".dotm", ".txt "},
{ ".dotx", ".docm "},
{ ".dotx", ".docx "},
{ ".dotx", ".dotm "},
{ ".dotx", ".epub "},
{ ".dotx", ".fb2 "},
{ ".dotx", ".html "},
{ ".dotx", ".odt "},
{ ".dotx", ".ott "},
{ ".dotx", ".pdf "},
{ ".dotx", ".rtf "},
{ ".dotx", ".txt "},
{ ".epub", ".docm "},
{ ".epub", ".docx "},
{ ".epub", ".dotm "},
{ ".epub", ".dotx "},
{ ".epub", ".fb2 "},
{ ".epub", ".html "},
{ ".epub", ".odt "},
{ ".epub", ".ott "},
{ ".epub", ".pdf "},
{ ".epub", ".rtf "},
{ ".epub", ".txt "},
{ ".fb2", ".docm "},
{ ".fb2", ".docx "},
{ ".fb2", ".dotm "},
{ ".fb2", ".dotx "},
{ ".fb2", ".epub "},
{ ".fb2", ".html "},
{ ".fb2", ".odt "},
{ ".fb2", ".ott "},
{ ".fb2", ".pdf "},
{ ".fb2", ".rtf "},
{ ".fb2", ".txt "},
{ ".fodp", ".odp "},
{ ".fodp", ".otp "},
{ ".fodp", ".pdf "},
{ ".fodp", ".potm "},
{ ".fodp", ".potx "},
{ ".fodp", ".ppsm "},
{ ".fodp", ".ppsx "},
{ ".fodp", ".pptm "},
{ ".fodp", ".pptx "},
{ ".fods", ".csv "},
{ ".fods", ".ods "},
{ ".fods", ".ots "},
{ ".fods", ".pdf "},
{ ".fods", ".xlsm "},
{ ".fods", ".xlsx "},
{ ".fods", ".xltm "},
{ ".fods", ".xltx "},
{ ".fodt", ".docm "},
{ ".fodt", ".docx "},
{ ".fodt", ".dotm "},
{ ".fodt", ".dotx "},
{ ".fodt", ".epub "},
{ ".fodt", ".fb2 "},
{ ".fodt", ".html "},
{ ".fodt", ".odt "},
{ ".fodt", ".ott "},
{ ".fodt", ".pdf "},
{ ".fodt", ".rtf "},
{ ".fodt", ".txt "},
{ ".html", ".docm "},
{ ".html", ".docx "},
{ ".html", ".dotm "},
{ ".html", ".dotx "},
{ ".html", ".epub "},
{ ".html", ".fb2 "},
{ ".html", ".odt "},
{ ".html", ".ott "},
{ ".html", ".pdf "},
{ ".html", ".rtf "},
{ ".html", ".txt "},
{ ".mht", ".docm "},
{ ".mht", ".docx "},
{ ".mht", ".dotm "},
{ ".mht", ".dotx "},
{ ".mht", ".epub "},
{ ".mht", ".fb2 "},
{ ".mht", ".odt "},
{ ".mht", ".ott "},
{ ".mht", ".pdf "},
{ ".mht", ".rtf "},
{ ".mht", ".txt "},
{ ".odp", ".otp "},
{ ".odp", ".pdf "},
{ ".odp", ".potm "},
{ ".odp", ".potx "},
{ ".odp", ".ppsm "},
{ ".odp", ".ppsx "},
{ ".odp", ".pptm "},
{ ".odp", ".pptx "},
{ ".ods", ".csv "},
{ ".ods", ".ots "},
{ ".ods", ".pdf "},
{ ".ods", ".xlsm "},
{ ".ods", ".xlsx "},
{ ".ods", ".xltm "},
{ ".ods", ".xltx "},
{ ".odt", ".docm "},
{ ".odt", ".docx "},
{ ".odt", ".dotm "},
{ ".odt", ".dotx "},
{ ".odt", ".epub "},
{ ".odt", ".fb2 "},
{ ".odt", ".html "},
{ ".odt", ".ott "},
{ ".odt", ".pdf "},
{ ".odt", ".rtf "},
{ ".odt", ".txt "},
{ ".otp", ".odp "},
{ ".otp", ".pdf "},
{ ".otp", ".potm "},
{ ".otp", ".potx "},
{ ".otp", ".ppsm "},
{ ".otp", ".ppsx "},
{ ".otp", ".pptm "},
{ ".otp", ".pptx "},
{ ".ots", ".csv "},
{ ".ots", ".ods "},
{ ".ots", ".pdf "},
{ ".ots", ".xlsm "},
{ ".ots", ".xlsx "},
{ ".ots", ".xltm "},
{ ".ots", ".xltx "},
{ ".ott", ".docm "},
{ ".ott", ".docx "},
{ ".ott", ".dotm "},
{ ".ott", ".dotx "},
{ ".ott", ".epub "},
{ ".ott", ".fb2 "},
{ ".ott", ".html "},
{ ".ott", ".odt "},
{ ".ott", ".pdf "},
{ ".ott", ".rtf "},
{ ".ott", ".txt "},
{ ".oxps", ".docm "},
{ ".oxps", ".docx "},
{ ".oxps", ".dotm "},
{ ".oxps", ".dotx "},
{ ".oxps", ".epub "},
{ ".oxps", ".fb2 "},
{ ".oxps", ".html "},
{ ".oxps", ".odt "},
{ ".oxps", ".ott "},
{ ".oxps", ".pdf "},
{ ".oxps", ".rtf "},
{ ".oxps", ".txt "},
{ ".pdf", ".docm "},
{ ".pdf", ".docx "},
{ ".pdf", ".dotm "},
{ ".pdf", ".dotx "},
{ ".pdf", ".epub "},
{ ".pdf", ".fb2 "},
{ ".pdf", ".html "},
{ ".pdf", ".odt "},
{ ".pdf", ".ott "},
{ ".pdf", ".rtf "},
{ ".pdf", ".txt "},
{ ".pot", ".odp "},
{ ".pot", ".otp "},
{ ".pot", ".pdf "},
{ ".pot", ".potm "},
{ ".pot", ".potx "},
{ ".pot", ".ppsm "},
{ ".pot", ".ppsx "},
{ ".pot", ".pptm "},
{ ".pot", ".pptx "},
{ ".potm", ".odp "},
{ ".potm", ".otp "},
{ ".potm", ".pdf "},
{ ".potm", ".potx "},
{ ".potm", ".ppsm "},
{ ".potm", ".ppsx "},
{ ".potm", ".pptm "},
{ ".potm", ".pptx "},
{ ".potx", ".odp "},
{ ".potx", ".otp "},
{ ".potx", ".pdf "},
{ ".potx", ".potm "},
{ ".potx", ".ppsm "},
{ ".potx", ".ppsx "},
{ ".potx", ".pptm "},
{ ".potx", ".pptx "},
{ ".pps", ".odp "},
{ ".pps", ".otp "},
{ ".pps", ".pdf "},
{ ".pps", ".potm "},
{ ".pps", ".potx "},
{ ".pps", ".ppsm "},
{ ".pps", ".ppsx "},
{ ".pps", ".pptm "},
{ ".pps", ".pptx "},
{ ".ppsm", ".odp "},
{ ".ppsm", ".otp "},
{ ".ppsm", ".pdf "},
{ ".ppsm", ".potm "},
{ ".ppsm", ".potx "},
{ ".ppsm", ".ppsx "},
{ ".ppsm", ".pptm "},
{ ".ppsm", ".pptx "},
{ ".ppsx", ".odp "},
{ ".ppsx", ".otp "},
{ ".ppsx", ".pdf "},
{ ".ppsx", ".potm "},
{ ".ppsx", ".potx "},
{ ".ppsx", ".ppsm "},
{ ".ppsx", ".pptm "},
{ ".ppsx", ".pptx "},
{ ".ppt", ".odp "},
{ ".ppt", ".otp "},
{ ".ppt", ".pdf "},
{ ".ppt", ".potm "},
{ ".ppt", ".potx "},
{ ".ppt", ".ppsm "},
{ ".ppt", ".ppsx "},
{ ".ppt", ".pptm "},
{ ".ppt", ".pptx "},
{ ".pptm", ".odp "},
{ ".pptm", ".otp "},
{ ".pptm", ".pdf "},
{ ".pptm", ".potm "},
{ ".pptm", ".potx "},
{ ".pptm", ".ppsm "},
{ ".pptm", ".ppsx "},
{ ".pptm", ".pptx "},
{ ".pptt", ".pptx "},
{ ".pptx", ".odp "},
{ ".pptx", ".otp "},
{ ".pptx", ".pdf "},
{ ".pptx", ".potm "},
{ ".pptx", ".potx "},
{ ".pptx", ".ppsm "},
{ ".pptx", ".ppsx "},
{ ".pptx", ".pptm "},
{ ".rtf", ".docm "},
{ ".rtf", ".docx "},
{ ".rtf", ".dotm "},
{ ".rtf", ".dotx "},
{ ".rtf", ".epub "},
{ ".rtf", ".fb2 "},
{ ".rtf", ".html "},
{ ".rtf", ".odt "},
{ ".rtf", ".ott "},
{ ".rtf", ".pdf "},
{ ".rtf", ".txt "},
{ ".txt", ".docm "},
{ ".txt", ".docx "},
{ ".txt", ".dotm "},
{ ".txt", ".dotx "},
{ ".txt", ".epub "},
{ ".txt", ".fb2 "},
{ ".txt", ".html "},
{ ".txt", ".odt "},
{ ".txt", ".ott "},
{ ".txt", ".pdf "},
{ ".txt", ".rtf "},
{ ".xls", ".csv "},
{ ".xls", ".ods "},
{ ".xls", ".ots "},
{ ".xls", ".pdf "},
{ ".xls", ".xlsm "},
{ ".xls", ".xlsx "},
{ ".xls", ".xltm "},
{ ".xls", ".xltx "},
{ ".xlsm", ".csv "},
{ ".xlsm", ".ods "},
{ ".xlsm", ".ots "},
{ ".xlsm", ".pdf "},
{ ".xlsm", ".xlsx "},
{ ".xlsm", ".xltm "},
{ ".xlsm", ".xltx "},
{ ".xlst", ".xlsx "},
{ ".xlsx", ".csv "},
{ ".xlsx", ".ods "},
{ ".xlsx", ".ots "},
{ ".xlsx", ".pdf "},
{ ".xlsx", ".xlsm "},
{ ".xlsx", ".xltm "},
{ ".xlsx", ".xltx "},
{ ".xlt", ".csv "},
{ ".xlt", ".ods "},
{ ".xlt", ".ots "},
{ ".xlt", ".pdf "},
{ ".xlt", ".xlsm "},
{ ".xlt", ".xlsx "},
{ ".xlt", ".xltm "},
{ ".xlt", ".xltx "},
{ ".xltm", ".csv "},
{ ".xltm", ".ods "},
{ ".xltm", ".ots "},
{ ".xltm", ".pdf "},
{ ".xltm", ".xlsm "},
{ ".xltm", ".xlsx "},
{ ".xltm", ".xltx "},
{ ".xltx", ".csv "},
{ ".xltx", ".ods "},
{ ".xltx", ".ots "},
{ ".xltx", ".pdf "},
{ ".xltx", ".xlsm "},
{ ".xltx", ".xlsx "},
{ ".xltx", ".xltm "},
{ ".xml", ".docm "},
{ ".xml", ".docx "},
{ ".xml", ".dotm "},
{ ".xml", ".dotx "},
{ ".xml", ".epub "},
{ ".xml", ".fb2 "},
{ ".xml", ".html "},
{ ".xml", ".odt "},
{ ".xml", ".ott "},
{ ".xml", ".pdf "},
{ ".xml", ".rtf "},
{ ".xml", ".txt "},
{ ".xps", ".docm "},
{ ".xps", ".docx "},
{ ".xps", ".dotm "},
{ ".xps", ".dotx "},
{ ".xps", ".epub "},
{ ".xps", ".fb2 "},
{ ".xps", ".html "},
{ ".xps", ".odt "},
{ ".xps", ".ott "},
{ ".xps", ".pdf "},
{ ".xps", ".rtf "},
{ ".xps", ".txt" }
});
migrationBuilder.InsertData(

File diff suppressed because it is too large Load Diff

View File

@ -318,354 +318,411 @@ public partial class FilesDbContextMigrate : Migration
columns: new[] { "input", "output" },
values: new object[,]
{
{ ".csv", ".ods" },
{ ".csv", ".ots" },
{ ".csv", ".pdf" },
{ ".csv", ".xlsm" },
{ ".csv", ".xlsx" },
{ ".csv", ".xltm" },
{ ".csv", ".xltx" },
{ ".doc", ".docm" },
{ ".doc", ".docx" },
{ ".doc", ".dotm" },
{ ".doc", ".dotx" },
{ ".doc", ".epub" },
{ ".doc", ".fb2" },
{ ".doc", ".html" },
{ ".doc", ".odt" },
{ ".doc", ".ott" },
{ ".doc", ".pdf" },
{ ".doc", ".rtf" },
{ ".doc", ".txt" },
{ ".docm", ".docx" },
{ ".docm", ".dotm" },
{ ".docm", ".dotx" },
{ ".docm", ".epub" },
{ ".docm", ".fb2" },
{ ".docm", ".html" },
{ ".docm", ".odt" },
{ ".docm", ".ott" },
{ ".docm", ".pdf" },
{ ".docm", ".rtf" },
{ ".docm", ".txt" },
{ ".doct", ".docx" },
{ ".docx", ".docm" },
{ ".docx", ".docxf" },
{ ".docx", ".dotm" },
{ ".docx", ".dotx" },
{ ".docx", ".epub" },
{ ".docx", ".fb2" },
{ ".docx", ".html" },
{ ".docx", ".odt" },
{ ".docx", ".ott" },
{ ".docx", ".pdf" },
{ ".docx", ".rtf" },
{ ".docx", ".txt" },
{ ".docxf", ".docx" },
{ ".docxf", ".dotx" },
{ ".docxf", ".epub" },
{ ".docxf", ".fb2" },
{ ".docxf", ".html" },
{ ".docxf", ".odt" },
{ ".docxf", ".oform" },
{ ".docxf", ".ott" },
{ ".docxf", ".pdf" },
{ ".docxf", ".rtf" },
{ ".docxf", ".txt" },
{ ".dot", ".docm" },
{ ".dot", ".docx" },
{ ".dot", ".dotm" },
{ ".dot", ".dotx" },
{ ".dot", ".epub" },
{ ".dot", ".fb2" },
{ ".dot", ".html" },
{ ".dot", ".odt" },
{ ".dot", ".ott" },
{ ".dot", ".pdf" },
{ ".dot", ".rtf" },
{ ".dot", ".txt" },
{ ".dotm", ".docm" },
{ ".dotm", ".docx" },
{ ".dotm", ".dotx" },
{ ".dotm", ".epub" },
{ ".dotm", ".fb2" },
{ ".dotm", ".html" },
{ ".dotm", ".odt" },
{ ".dotm", ".ott" },
{ ".dotm", ".pdf" },
{ ".dotm", ".rtf" },
{ ".dotm", ".txt" },
{ ".dotx", ".docm" },
{ ".dotx", ".docx" },
{ ".dotx", ".dotm" },
{ ".dotx", ".epub" },
{ ".dotx", ".fb2" },
{ ".dotx", ".html" },
{ ".dotx", ".odt" },
{ ".dotx", ".ott" },
{ ".dotx", ".pdf" },
{ ".dotx", ".rtf" },
{ ".dotx", ".txt" },
{ ".epub", ".docm" },
{ ".epub", ".docx" },
{ ".epub", ".dotm" },
{ ".epub", ".dotx" },
{ ".epub", ".fb2" },
{ ".epub", ".html" },
{ ".epub", ".odt" },
{ ".epub", ".ott" },
{ ".epub", ".pdf" },
{ ".epub", ".rtf" },
{ ".epub", ".txt" },
{ ".fb2", ".docm" },
{ ".fb2", ".docx" },
{ ".fb2", ".dotm" },
{ ".fb2", ".dotx" },
{ ".fb2", ".epub" },
{ ".fb2", ".html" },
{ ".fb2", ".odt" },
{ ".fb2", ".ott" },
{ ".fb2", ".pdf" },
{ ".fb2", ".rtf" },
{ ".fb2", ".txt" },
{ ".fodp", ".odp" },
{ ".fodp", ".otp" },
{ ".fodp", ".pdf" },
{ ".fodp", ".potm" },
{ ".fodp", ".potx" },
{ ".fodp", ".pptm" },
{ ".fodp", ".pptx" },
{ ".fods", ".csv" },
{ ".fods", ".ods" },
{ ".fods", ".ots" },
{ ".fods", ".pdf" },
{ ".fods", ".xlsm" },
{ ".fods", ".xlsx" },
{ ".fods", ".xltm" },
{ ".fods", ".xltx" },
{ ".fodt", ".docm" },
{ ".fodt", ".docx" },
{ ".fodt", ".dotm" },
{ ".fodt", ".dotx" },
{ ".fodt", ".epub" },
{ ".fodt", ".fb2" },
{ ".fodt", ".html" },
{ ".fodt", ".odt" },
{ ".fodt", ".ott" },
{ ".fodt", ".pdf" },
{ ".fodt", ".rtf" },
{ ".fodt", ".txt" },
{ ".html", ".docm" },
{ ".html", ".docx" },
{ ".html", ".dotm" },
{ ".html", ".dotx" },
{ ".html", ".epub" },
{ ".html", ".fb2" },
{ ".html", ".odt" },
{ ".html", ".ott" },
{ ".html", ".pdf" },
{ ".html", ".rtf" },
{ ".html", ".txt" },
{ ".mht", ".docm" },
{ ".mht", ".docx" },
{ ".mht", ".dotm" },
{ ".mht", ".dotx" },
{ ".mht", ".epub" },
{ ".mht", ".fb2" },
{ ".mht", ".odt" },
{ ".mht", ".ott" },
{ ".mht", ".pdf" },
{ ".mht", ".rtf" },
{ ".mht", ".txt" },
{ ".odp", ".otp" },
{ ".odp", ".pdf" },
{ ".odp", ".potm" },
{ ".odp", ".potx" },
{ ".odp", ".pptm" },
{ ".odp", ".pptx" },
{ ".ods", ".csv" },
{ ".ods", ".ots" },
{ ".ods", ".pdf" },
{ ".ods", ".xlsm" },
{ ".ods", ".xlsx" },
{ ".ods", ".xltm" },
{ ".ods", ".xltx" },
{ ".odt", ".docm" },
{ ".odt", ".docx" },
{ ".odt", ".dotm" },
{ ".odt", ".dotx" },
{ ".odt", ".epub" },
{ ".odt", ".fb2" },
{ ".odt", ".html" },
{ ".odt", ".ott" },
{ ".odt", ".pdf" },
{ ".odt", ".rtf" },
{ ".odt", ".txt" },
{ ".otp", ".odp" },
{ ".otp", ".pdf" },
{ ".otp", ".potm" },
{ ".otp", ".potx" },
{ ".otp", ".pptm" },
{ ".otp", ".pptx" },
{ ".ots", ".csv" },
{ ".ots", ".ods" },
{ ".ots", ".pdf" },
{ ".ots", ".xlsm" },
{ ".ots", ".xlsx" },
{ ".ots", ".xltm" },
{ ".ots", ".xltx" },
{ ".ott", ".docm" },
{ ".ott", ".docx" },
{ ".ott", ".dotm" },
{ ".ott", ".dotx" },
{ ".ott", ".epub" },
{ ".ott", ".fb2" },
{ ".ott", ".html" },
{ ".ott", ".odt" },
{ ".ott", ".pdf" },
{ ".ott", ".rtf" },
{ ".ott", ".txt" },
{ ".oxps", ".pdf" },
{ ".pot", ".odp" },
{ ".pot", ".otp" },
{ ".pot", ".pdf" },
{ ".pot", ".potm" },
{ ".pot", ".potx" },
{ ".pot", ".pptm" },
{ ".pot", ".pptx" },
{ ".potm", ".odp" },
{ ".potm", ".otp" },
{ ".potm", ".pdf" },
{ ".potm", ".potx" },
{ ".potm", ".pptm" },
{ ".potm", ".pptx" },
{ ".potx", ".odp" },
{ ".potx", ".otp" },
{ ".potx", ".pdf" },
{ ".potx", ".potm" },
{ ".potx", ".pptm" },
{ ".potx", ".pptx" },
{ ".pps", ".odp" },
{ ".pps", ".otp" },
{ ".pps", ".pdf" },
{ ".pps", ".potm" },
{ ".pps", ".potx" },
{ ".pps", ".pptm" },
{ ".pps", ".pptx" },
{ ".ppsm", ".odp" },
{ ".ppsm", ".otp" },
{ ".ppsm", ".pdf" },
{ ".ppsm", ".potm" },
{ ".ppsm", ".potx" },
{ ".ppsm", ".pptm" },
{ ".ppsm", ".pptx" },
{ ".ppsx", ".odp" },
{ ".ppsx", ".otp" },
{ ".ppsx", ".pdf" },
{ ".ppsx", ".potm" },
{ ".ppsx", ".potx" },
{ ".ppsx", ".pptm" },
{ ".ppsx", ".pptx" },
{ ".ppt", ".odp" },
{ ".ppt", ".otp" },
{ ".ppt", ".pdf" },
{ ".ppt", ".potm" },
{ ".ppt", ".potx" },
{ ".ppt", ".pptm" },
{ ".ppt", ".pptx" },
{ ".pptm", ".odp" },
{ ".pptm", ".otp" },
{ ".pptm", ".pdf" },
{ ".pptm", ".potm" },
{ ".pptm", ".potx" },
{ ".pptm", ".pptx" },
{ ".pptt", ".pptx" },
{ ".pptx", ".odp" },
{ ".pptx", ".otp" },
{ ".pptx", ".pdf" },
{ ".pptx", ".potm" },
{ ".pptx", ".potx" },
{ ".pptx", ".pptm" },
{ ".rtf", ".docm" },
{ ".rtf", ".docx" },
{ ".rtf", ".dotm" },
{ ".rtf", ".dotx" },
{ ".rtf", ".epub" },
{ ".rtf", ".fb2" },
{ ".rtf", ".html" },
{ ".rtf", ".odt" },
{ ".rtf", ".ott" },
{ ".rtf", ".pdf" },
{ ".rtf", ".txt" },
{ ".txt", ".docm" },
{ ".txt", ".docx" },
{ ".txt", ".dotm" },
{ ".txt", ".dotx" },
{ ".txt", ".epub" },
{ ".txt", ".fb2" },
{ ".txt", ".html" },
{ ".txt", ".odt" },
{ ".txt", ".ott" },
{ ".txt", ".pdf" },
{ ".txt", ".rtf" },
{ ".xls", ".csv" },
{ ".xls", ".ods" },
{ ".xls", ".ots" },
{ ".xls", ".pdf" },
{ ".xls", ".xlsm" },
{ ".xls", ".xlsx" },
{ ".xls", ".xltm" },
{ ".xls", ".xltx" },
{ ".xlsm", ".csv" },
{ ".xlsm", ".ods" },
{ ".xlsm", ".ots" },
{ ".xlsm", ".pdf" },
{ ".xlsm", ".xlsx" },
{ ".xlsm", ".xltm" },
{ ".xlsm", ".xltx" },
{ ".xlst", ".xlsx" },
{ ".xlsx", ".csv" },
{ ".xlsx", ".ods" },
{ ".xlsx", ".ots" },
{ ".xlsx", ".pdf" },
{ ".xlsx", ".xlsm" },
{ ".xlsx", ".xltm" },
{ ".xlsx", ".xltx" },
{ ".xlt", ".csv" },
{ ".xlt", ".ods" },
{ ".xlt", ".ots" },
{ ".xlt", ".pdf" },
{ ".xlt", ".xlsm" },
{ ".xlt", ".xlsx" },
{ ".xlt", ".xltm" },
{ ".xlt", ".xltx" },
{ ".xltm", ".csv" },
{ ".xltm", ".ods" },
{ ".xltm", ".ots" },
{ ".xltm", ".pdf" },
{ ".xltm", ".xlsm" },
{ ".xltm", ".xlsx" },
{ ".xltm", ".xltx" },
{ ".xltx", ".csv" },
{ ".xltx", ".ods" },
{ ".xltx", ".ots" },
{ ".xltx", ".pdf" },
{ ".xltx", ".xlsm" },
{ ".xltx", ".xlsx" },
{ ".xltx", ".xltm" },
{ ".xml", ".docm" },
{ ".xml", ".docx" },
{ ".xml", ".dotm" },
{ ".xml", ".dotx" },
{ ".xml", ".epub" },
{ ".xml", ".fb2" },
{ ".xml", ".html" },
{ ".xml", ".odt" },
{ ".xml", ".ott" },
{ ".xml", ".pdf" },
{ ".xml", ".rtf" },
{ ".xml", ".txt" },
{ ".xps", ".pdf" }
{ ".csv", ".ods "},
{ ".csv", ".ots "},
{ ".csv", ".pdf "},
{ ".csv", ".xlsm "},
{ ".csv", ".xlsx "},
{ ".csv", ".xltm "},
{ ".csv", ".xltx "},
{ ".doc", ".docm "},
{ ".doc", ".docx "},
{ ".doc", ".dotm "},
{ ".doc", ".dotx "},
{ ".doc", ".epub "},
{ ".doc", ".fb2 "},
{ ".doc", ".html "},
{ ".doc", ".odt "},
{ ".doc", ".ott "},
{ ".doc", ".pdf "},
{ ".doc", ".rtf "},
{ ".doc", ".txt "},
{ ".docm", ".docx "},
{ ".docm", ".dotm "},
{ ".docm", ".dotx "},
{ ".docm", ".epub "},
{ ".docm", ".fb2 "},
{ ".docm", ".html "},
{ ".docm", ".odt "},
{ ".docm", ".ott "},
{ ".docm", ".pdf "},
{ ".docm", ".rtf "},
{ ".docm", ".txt "},
{ ".doct", ".docx "},
{ ".docx", ".docm "},
{ ".docx", ".docxf "},
{ ".docx", ".dotm "},
{ ".docx", ".dotx "},
{ ".docx", ".epub "},
{ ".docx", ".fb2 "},
{ ".docx", ".html "},
{ ".docx", ".odt "},
{ ".docx", ".ott "},
{ ".docx", ".pdf "},
{ ".docx", ".rtf "},
{ ".docx", ".txt "},
{ ".docxf", ".docm "},
{ ".docxf", ".docx "},
{ ".docxf", ".dotm "},
{ ".docxf", ".dotx "},
{ ".docxf", ".epub "},
{ ".docxf", ".fb2 "},
{ ".docxf", ".html "},
{ ".docxf", ".odt "},
{ ".docxf", ".oform "},
{ ".docxf", ".ott "},
{ ".docxf", ".pdf "},
{ ".docxf", ".rtf "},
{ ".docxf", ".txt "},
{ ".dot", ".docm "},
{ ".dot", ".docx "},
{ ".dot", ".dotm "},
{ ".dot", ".dotx "},
{ ".dot", ".epub "},
{ ".dot", ".fb2 "},
{ ".dot", ".html "},
{ ".dot", ".odt "},
{ ".dot", ".ott "},
{ ".dot", ".pdf "},
{ ".dot", ".rtf "},
{ ".dot", ".txt "},
{ ".dotm", ".docm "},
{ ".dotm", ".docx "},
{ ".dotm", ".dotx "},
{ ".dotm", ".epub "},
{ ".dotm", ".fb2 "},
{ ".dotm", ".html "},
{ ".dotm", ".odt "},
{ ".dotm", ".ott "},
{ ".dotm", ".pdf "},
{ ".dotm", ".rtf "},
{ ".dotm", ".txt "},
{ ".dotx", ".docm "},
{ ".dotx", ".docx "},
{ ".dotx", ".dotm "},
{ ".dotx", ".epub "},
{ ".dotx", ".fb2 "},
{ ".dotx", ".html "},
{ ".dotx", ".odt "},
{ ".dotx", ".ott "},
{ ".dotx", ".pdf "},
{ ".dotx", ".rtf "},
{ ".dotx", ".txt "},
{ ".epub", ".docm "},
{ ".epub", ".docx "},
{ ".epub", ".dotm "},
{ ".epub", ".dotx "},
{ ".epub", ".fb2 "},
{ ".epub", ".html "},
{ ".epub", ".odt "},
{ ".epub", ".ott "},
{ ".epub", ".pdf "},
{ ".epub", ".rtf "},
{ ".epub", ".txt "},
{ ".fb2", ".docm "},
{ ".fb2", ".docx "},
{ ".fb2", ".dotm "},
{ ".fb2", ".dotx "},
{ ".fb2", ".epub "},
{ ".fb2", ".html "},
{ ".fb2", ".odt "},
{ ".fb2", ".ott "},
{ ".fb2", ".pdf "},
{ ".fb2", ".rtf "},
{ ".fb2", ".txt "},
{ ".fodp", ".odp "},
{ ".fodp", ".otp "},
{ ".fodp", ".pdf "},
{ ".fodp", ".potm "},
{ ".fodp", ".potx "},
{ ".fodp", ".ppsm "},
{ ".fodp", ".ppsx "},
{ ".fodp", ".pptm "},
{ ".fodp", ".pptx "},
{ ".fods", ".csv "},
{ ".fods", ".ods "},
{ ".fods", ".ots "},
{ ".fods", ".pdf "},
{ ".fods", ".xlsm "},
{ ".fods", ".xlsx "},
{ ".fods", ".xltm "},
{ ".fods", ".xltx "},
{ ".fodt", ".docm "},
{ ".fodt", ".docx "},
{ ".fodt", ".dotm "},
{ ".fodt", ".dotx "},
{ ".fodt", ".epub "},
{ ".fodt", ".fb2 "},
{ ".fodt", ".html "},
{ ".fodt", ".odt "},
{ ".fodt", ".ott "},
{ ".fodt", ".pdf "},
{ ".fodt", ".rtf "},
{ ".fodt", ".txt "},
{ ".html", ".docm "},
{ ".html", ".docx "},
{ ".html", ".dotm "},
{ ".html", ".dotx "},
{ ".html", ".epub "},
{ ".html", ".fb2 "},
{ ".html", ".odt "},
{ ".html", ".ott "},
{ ".html", ".pdf "},
{ ".html", ".rtf "},
{ ".html", ".txt "},
{ ".mht", ".docm "},
{ ".mht", ".docx "},
{ ".mht", ".dotm "},
{ ".mht", ".dotx "},
{ ".mht", ".epub "},
{ ".mht", ".fb2 "},
{ ".mht", ".odt "},
{ ".mht", ".ott "},
{ ".mht", ".pdf "},
{ ".mht", ".rtf "},
{ ".mht", ".txt "},
{ ".odp", ".otp "},
{ ".odp", ".pdf "},
{ ".odp", ".potm "},
{ ".odp", ".potx "},
{ ".odp", ".ppsm "},
{ ".odp", ".ppsx "},
{ ".odp", ".pptm "},
{ ".odp", ".pptx "},
{ ".ods", ".csv "},
{ ".ods", ".ots "},
{ ".ods", ".pdf "},
{ ".ods", ".xlsm "},
{ ".ods", ".xlsx "},
{ ".ods", ".xltm "},
{ ".ods", ".xltx "},
{ ".odt", ".docm "},
{ ".odt", ".docx "},
{ ".odt", ".dotm "},
{ ".odt", ".dotx "},
{ ".odt", ".epub "},
{ ".odt", ".fb2 "},
{ ".odt", ".html "},
{ ".odt", ".ott "},
{ ".odt", ".pdf "},
{ ".odt", ".rtf "},
{ ".odt", ".txt "},
{ ".otp", ".odp "},
{ ".otp", ".pdf "},
{ ".otp", ".potm "},
{ ".otp", ".potx "},
{ ".otp", ".ppsm "},
{ ".otp", ".ppsx "},
{ ".otp", ".pptm "},
{ ".otp", ".pptx "},
{ ".ots", ".csv "},
{ ".ots", ".ods "},
{ ".ots", ".pdf "},
{ ".ots", ".xlsm "},
{ ".ots", ".xlsx "},
{ ".ots", ".xltm "},
{ ".ots", ".xltx "},
{ ".ott", ".docm "},
{ ".ott", ".docx "},
{ ".ott", ".dotm "},
{ ".ott", ".dotx "},
{ ".ott", ".epub "},
{ ".ott", ".fb2 "},
{ ".ott", ".html "},
{ ".ott", ".odt "},
{ ".ott", ".pdf "},
{ ".ott", ".rtf "},
{ ".ott", ".txt "},
{ ".oxps", ".docm "},
{ ".oxps", ".docx "},
{ ".oxps", ".dotm "},
{ ".oxps", ".dotx "},
{ ".oxps", ".epub "},
{ ".oxps", ".fb2 "},
{ ".oxps", ".html "},
{ ".oxps", ".odt "},
{ ".oxps", ".ott "},
{ ".oxps", ".pdf "},
{ ".oxps", ".rtf "},
{ ".oxps", ".txt "},
{ ".pdf", ".docm "},
{ ".pdf", ".docx "},
{ ".pdf", ".dotm "},
{ ".pdf", ".dotx "},
{ ".pdf", ".epub "},
{ ".pdf", ".fb2 "},
{ ".pdf", ".html "},
{ ".pdf", ".odt "},
{ ".pdf", ".ott "},
{ ".pdf", ".rtf "},
{ ".pdf", ".txt "},
{ ".pot", ".odp "},
{ ".pot", ".otp "},
{ ".pot", ".pdf "},
{ ".pot", ".potm "},
{ ".pot", ".potx "},
{ ".pot", ".ppsm "},
{ ".pot", ".ppsx "},
{ ".pot", ".pptm "},
{ ".pot", ".pptx "},
{ ".potm", ".odp "},
{ ".potm", ".otp "},
{ ".potm", ".pdf "},
{ ".potm", ".potx "},
{ ".potm", ".ppsm "},
{ ".potm", ".ppsx "},
{ ".potm", ".pptm "},
{ ".potm", ".pptx "},
{ ".potx", ".odp "},
{ ".potx", ".otp "},
{ ".potx", ".pdf "},
{ ".potx", ".potm "},
{ ".potx", ".ppsm "},
{ ".potx", ".ppsx "},
{ ".potx", ".pptm "},
{ ".potx", ".pptx "},
{ ".pps", ".odp "},
{ ".pps", ".otp "},
{ ".pps", ".pdf "},
{ ".pps", ".potm "},
{ ".pps", ".potx "},
{ ".pps", ".ppsm "},
{ ".pps", ".ppsx "},
{ ".pps", ".pptm "},
{ ".pps", ".pptx "},
{ ".ppsm", ".odp "},
{ ".ppsm", ".otp "},
{ ".ppsm", ".pdf "},
{ ".ppsm", ".potm "},
{ ".ppsm", ".potx "},
{ ".ppsm", ".ppsx "},
{ ".ppsm", ".pptm "},
{ ".ppsm", ".pptx "},
{ ".ppsx", ".odp "},
{ ".ppsx", ".otp "},
{ ".ppsx", ".pdf "},
{ ".ppsx", ".potm "},
{ ".ppsx", ".potx "},
{ ".ppsx", ".ppsm "},
{ ".ppsx", ".pptm "},
{ ".ppsx", ".pptx "},
{ ".ppt", ".odp "},
{ ".ppt", ".otp "},
{ ".ppt", ".pdf "},
{ ".ppt", ".potm "},
{ ".ppt", ".potx "},
{ ".ppt", ".ppsm "},
{ ".ppt", ".ppsx "},
{ ".ppt", ".pptm "},
{ ".ppt", ".pptx "},
{ ".pptm", ".odp "},
{ ".pptm", ".otp "},
{ ".pptm", ".pdf "},
{ ".pptm", ".potm "},
{ ".pptm", ".potx "},
{ ".pptm", ".ppsm "},
{ ".pptm", ".ppsx "},
{ ".pptm", ".pptx "},
{ ".pptt", ".pptx "},
{ ".pptx", ".odp "},
{ ".pptx", ".otp "},
{ ".pptx", ".pdf "},
{ ".pptx", ".potm "},
{ ".pptx", ".potx "},
{ ".pptx", ".ppsm "},
{ ".pptx", ".ppsx "},
{ ".pptx", ".pptm "},
{ ".rtf", ".docm "},
{ ".rtf", ".docx "},
{ ".rtf", ".dotm "},
{ ".rtf", ".dotx "},
{ ".rtf", ".epub "},
{ ".rtf", ".fb2 "},
{ ".rtf", ".html "},
{ ".rtf", ".odt "},
{ ".rtf", ".ott "},
{ ".rtf", ".pdf "},
{ ".rtf", ".txt "},
{ ".txt", ".docm "},
{ ".txt", ".docx "},
{ ".txt", ".dotm "},
{ ".txt", ".dotx "},
{ ".txt", ".epub "},
{ ".txt", ".fb2 "},
{ ".txt", ".html "},
{ ".txt", ".odt "},
{ ".txt", ".ott "},
{ ".txt", ".pdf "},
{ ".txt", ".rtf "},
{ ".xls", ".csv "},
{ ".xls", ".ods "},
{ ".xls", ".ots "},
{ ".xls", ".pdf "},
{ ".xls", ".xlsm "},
{ ".xls", ".xlsx "},
{ ".xls", ".xltm "},
{ ".xls", ".xltx "},
{ ".xlsm", ".csv "},
{ ".xlsm", ".ods "},
{ ".xlsm", ".ots "},
{ ".xlsm", ".pdf "},
{ ".xlsm", ".xlsx "},
{ ".xlsm", ".xltm "},
{ ".xlsm", ".xltx "},
{ ".xlst", ".xlsx "},
{ ".xlsx", ".csv "},
{ ".xlsx", ".ods "},
{ ".xlsx", ".ots "},
{ ".xlsx", ".pdf "},
{ ".xlsx", ".xlsm "},
{ ".xlsx", ".xltm "},
{ ".xlsx", ".xltx "},
{ ".xlt", ".csv "},
{ ".xlt", ".ods "},
{ ".xlt", ".ots "},
{ ".xlt", ".pdf "},
{ ".xlt", ".xlsm "},
{ ".xlt", ".xlsx "},
{ ".xlt", ".xltm "},
{ ".xlt", ".xltx "},
{ ".xltm", ".csv "},
{ ".xltm", ".ods "},
{ ".xltm", ".ots "},
{ ".xltm", ".pdf "},
{ ".xltm", ".xlsm "},
{ ".xltm", ".xlsx "},
{ ".xltm", ".xltx "},
{ ".xltx", ".csv "},
{ ".xltx", ".ods "},
{ ".xltx", ".ots "},
{ ".xltx", ".pdf "},
{ ".xltx", ".xlsm "},
{ ".xltx", ".xlsx "},
{ ".xltx", ".xltm "},
{ ".xml", ".docm "},
{ ".xml", ".docx "},
{ ".xml", ".dotm "},
{ ".xml", ".dotx "},
{ ".xml", ".epub "},
{ ".xml", ".fb2 "},
{ ".xml", ".html "},
{ ".xml", ".odt "},
{ ".xml", ".ott "},
{ ".xml", ".pdf "},
{ ".xml", ".rtf "},
{ ".xml", ".txt "},
{ ".xps", ".docm "},
{ ".xps", ".docx "},
{ ".xps", ".dotm "},
{ ".xps", ".dotx "},
{ ".xps", ".epub "},
{ ".xps", ".fb2 "},
{ ".xps", ".html "},
{ ".xps", ".odt "},
{ ".xps", ".ott "},
{ ".xps", ".pdf "},
{ ".xps", ".rtf "},
{ ".xps", ".txt" }
});
migrationBuilder.InsertData(

View File

@ -23,7 +23,8 @@
"storybook-serve": "yarn workspace @docspace/components run storybook-serve",
"test": "yarn workspace @docspace/components test",
"wipe": "shx rm -rf node_modules yarn.lock packages/**/node_modules",
"debug-info": "auto-changelog --unreleased-only --template debuginfo --output public/debuginfo.md"
"debug-info": "auto-changelog --unreleased-only --template debuginfo --output public/debuginfo.md",
"licenses-audit": "yarn licenses audit --output-csv=licenses.csv --config=licenses.config.js --summary"
},
"old-scripts": {
"build:test": "yarn workspaces foreach -vptiR --from '{@docspace/client,@docspace/login,@docspace/editor}' run build:test",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Əvvəllər \"İnteqrasiya\" bölməsində müvafiq xidməti birləşdirməlisiniz. Əks halda bağlantı mümkün olmayacaq.",
"ThirdPartyStoragePermanentSettingDescription": "Fayllar {{thirdpartyTitle}} qovluğunda üçüncü tərəf \"{{thirdpartyFolderName}}\" deposunda saxlanılır.\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "Üçüncü tərəfin yaddaşına qoşulmaq üçün DocSpace parametrlərinin İnteqrasiya bölməsində müvafiq xidməti əlavə etməlisiniz. İnteqrasiyanı aktivləşdirmək üçün DocSpace sahibi və ya administratorla əlaqə saxlayın.",
"ThirdPartyStorageTitle": "Üçüncü tərəf yaddaşı",
"ViewOnlyRoomDescription": "Hazır sənədlərə, hesabatlara, sənədləşməyə və digər fayllara baxmaq üçün paylaşın.",
"ViewOnlyRoomTitle": "Yalnız baxış otağı"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "Bu otaqları silmək üzrəsiniz. Onları bərpa edə bilməzsiniz.",
"MoveToTrashButton": "Zibil qutusuna yerləşdir",
"MoveToTrashFile": "Bu faylı silmək üzrəsiniz. Nəzərə alın ki, fayl kimsə ilə paylaşılıbsa, əlçatan olmayacaq. Fayl 30 gün ərzində həmişəlik silinəcək. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashFileFromPersonal": "Bu faylı silmək üzrəsiniz. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashFolder": "Siz bu qovluğu silmək üzrəsiniz. Nəzərə alın ki, bunu kimsə ilə paylaşmısınızsa, istifadə edilə bilməz. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashFolderFromPersonal": "Bu qovluğu silmək üzrəsiniz. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashItems": "Bu elementləri silmək üzrəsiniz. Nəzərə alın ki, elementləri kimsə ilə paylaşmısınızsa, onlar əlçatan olmayacaq. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashItemsFromPersonal": "Bu elementləri silmək üzrəsiniz. Davam etmək istədiyinizə əminsiniz?",
"MoveToTrashTitle": "Zibil qutusuna atılsın?",
"UnsubscribeButton": "Abunəlikdən çıx",
"UnsubscribeNote": "Siyahıda göstərilən elementlərdən abunəliyi dayandırmağı əminsinizmi?",

View File

@ -1,3 +1,7 @@
{
"SaveOrChange": "Tələb olunan parametri azaldın və ya cari qiymət planınızı saxlayın."
"CannotChangePlan": "İstifadə olunan yaddaşın həcmi və ya admin/ekspert istifadəçilərin sayı seçilmiş planın məhdudiyyətlərini keçdiyi üçün planınızı dəyişə bilməzsiniz:",
"ChangePricingPlan": "Qiymət planını dəyişdirin",
"PlanStorageLimit": "Yeni tarifin məhdudiyyəti <1>{{storageValue}}</1> yaddaş və cari istifadə etdiyiniz yaddaş <1>{{currentStorageValue}}</1>-dir.",
"PlanUsersLimit": "Siz komandanı <1>{{usersCount}}</1> admin/ekspert istifadəçi səviyyəsinə endirmək istəyirsiniz və DocSpace-də belə istifadəçilərin cari sayı <1>{{currentUsersCount}}</1>-dir.",
"SaveOrChange": "Bu DocSpace-in sahibi olaraq, hesabınızı silməzdən əvvəl sahibliyi başqa istifadəçiyə ötürməlisiniz. Davam etmək üçün yeni sahibkar seçin."
}

View File

@ -27,7 +27,6 @@
"EditRoom": "Otağı redaktə edin",
"EmptyFile": "Boş fayl",
"EmptyFilterDescriptionText": "Heç bir fayl və ya qovluq bu süzgəcə uyğun deyil. Xahiş edirik digər süzgəc parametrindən istifadə edin və ya bütün faylların göstərilməsi üçün süzgəci sıfırlayın.",
"EmptyFilterDescriptionTextRooms": "Bu filtrə uyğun otaq yoxdur. Bütün otaqlara baxmaq üçün fərqli filtri və ya təmiz filtri sınayın.",
"EmptyFilterSubheadingText": "Bu süzgəc üçün heç bir fayl tapılmadı",
"EmptyFolderDecription": "Faylları buraya çəkin və ya yenilərini yaradın",
"EmptyFolderDescriptionUser": "Adminlər tərəfindən yüklənmiş fayl və qovluqlar burada görünəcək.",

View File

@ -26,6 +26,7 @@
"FeedUpdateUser": "{{role}} rolu təyin edildi",
"FileExtension": "Fayl uzantısı",
"FilesEmptyScreenText": "Fayl və qovluq detallarına burada baxın",
"HistoryEmptyScreenText": "Hərəkət tarixçəsi burada göstəriləcək",
"ItemsSelected": "Seçilmiş elementlər",
"LastModifiedBy": "tərəfindən Son Dəyişiklik",
"PendingInvitations": "Gözləyən dəvətlər",

View File

@ -1,22 +1,22 @@
{
"Ascending": "Artan",
"CopyWindowCode": "Pəncərə yerləşdirmə kodunu kopyalayın",
"CopyWindowCode": "Pəncərənin kodunu kopyalayın",
"DataDisplay": "Məlumatların göstərilməsi parametrləri",
"Descending": "Azalan",
"Destroy": "Məhv etmək",
"EnterCount": "Sayını daxil edin",
"EnterCount": "Sayı daxil edin",
"EnterHeight": "Hündürlüyü daxil edin",
"EnterId": "ID daxil edin",
"EnterPage": "Nömrə səhifəsini daxil edin",
"EnterWidth": "Genişliyi daxil edin",
"FolderId": "Qovluq id",
"FrameId": "Çərçivə id",
"EnterPage": "Səhifə nömrəsini daxil edin",
"EnterWidth": "Eni daxil edin",
"FolderId": "Qovluq ID",
"FrameId": "Çərçivə ID",
"Header": "Başlıq",
"ItemsCount": "Maddələr sayılır",
"ItemsCount": "Məhsulların sayı",
"JavascriptSdk": "Javascript SDK",
"Menu": "Menyu",
"Page": "Səhifə",
"SearchTerm": "Axtarış termini",
"SortOrder": "Sırala",
"SearchTerm": "Termin axtarın",
"SortOrder": "Sıralamanı qaydaya salın",
"WindowParameters": "Pəncərə parametrləri"
}

View File

@ -26,7 +26,6 @@
"Payer": "Ödəyici",
"PayerDescription": "Bu istifadəçi ödəniş təfərrüatlarına daxil ola bilər və kvota təyin edib ödəniş edə bilən yeganə istifadəçidir. DocSpace sahibi və ödəniş meneceri özləri Stripe müştəri portalından istifadə edərək ödəniş meneceri rolunu yenidən təyin edə bilərlər.",
"PaymentOverdue": "Yeni istifadəçilər əlavə etmək mümkün deyil.",
"PowerUserDescription": "Ekspert istifadəçilər otaqda fayllar yarada və redaktə edə bilərlər, lakin otaqlar yarada, istifadəçiləri idarə edə və ya parametrlərə daxil ola bilməzlər.",
"PriceCalculation": "Qiymətinizi hesablayın",
"QuotaPaidUserLimitError": "Ödənişli istifadəçi limitinə çatıldı. <1>Ödənişlər</1>",
"RenewSubscription": "{{planName}} Plan abunəliyini yeniləyin",

View File

@ -16,7 +16,6 @@
"LogoutBtn": ıxış",
"LogoutDescription": "Qeyd. Bundan başqa bütün aktiv bağlantılar hazırda istifadə edildiyi üçün sistemdən çıxacaq.",
"LogoutFrom": "{{platform}} {{browser}} çıxılsın?",
"MessageEmailActivationInstuctionsSentOnEmail": " <strong>{{ email }}</strong> elektron poçta emailin aktivlşdirilməsi haqqında təlimat göndərilmişdir.",
"MyProfile": "Mənim profilim",
"ProviderSuccessfullyConnected": "Provayder müvəffəqiyyətlə qoşuldu",
"ProviderSuccessfullyDisconnected": "Provayderin əlaqəsi müvəffəqiyyətlə kəsildi",

View File

@ -1,6 +1,5 @@
{
"EmptyRoomsDescription": "Lütfən, Otaqlarımda ilk otağı yaradın.",
"EmptyRoomsHeader": "Burada hələ otaq yoxdur",
"RoomList": "Otaq siyahısı",
"SearchEmptyRoomsDescription": "Bu filtrə uyğun otaq yoxdur. Bütün otaqlara baxmaq üçün fərqli filtri və ya təmiz filtri sınayın."
"RoomList": "Otaq siyahısı"
}

View File

@ -139,8 +139,8 @@
"PortalRenaming": "Portalın Adının dəyişdirilməsi",
"PortalRenamingDescription": "Burada portal ünvanınızı dəyişə bilərsiniz.",
"PortalRenamingLabelText": "Yeni portal adı",
"PortalRenamingMobile": "onlyoffice.com/onlyoffice.eu portal ünvanının yanında görünəcək hissəni daxil edin. Qeyd edin: Yadda saxla düyməsini kliklədikdən sonra köhnə portal ünvanınız yeni istifadəçiləri üçün əlçatan olacaq.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> onlyoffice.com/onlyoffice.eu portal ünvanının yanında görünəcək hissəni daxil edin.",
"PortalRenamingMobile": "{{domain}} portal ünvanının yanında görünəcək hissəni daxil edin. Qeyd edin: Yadda saxla düyməsini kliklədikdən sonra köhnə portal ünvanınız yeni istifadəçiləri üçün əlçatan olacaq.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> {{domain}} portal ünvanının yanında görünəcək hissəni daxil edin.",
"ProductUserOpportunities": "Profillərə və qruplara baxın",
"RecoveryFileNotSelected": "Bərpa xətası. Bərpa olunacaq fayl seçilməyib.",
"RestoreBackup": "Məlumatların bərpası",
@ -178,7 +178,6 @@
"ThirdPartyPropsDeactivated": "Uğurla deaktiv edildi",
"ThirdPartyResource": "Üçüncü tərəf resursu",
"ThirdPartyResourceDescription": "Ehtiyat nüsxələr üçüncü tərəf hesablarda da (Dropbox, Box.com, OneDrive və ya Google Drive) saxlana bilər. Buna görə də, ehtiyat nüsxələrinizi yadda saxlaya bilmək üçün əvvəlcə öz üçüncü tərəf hesabınızı (Dropbox, Box.com, OneDrive və ya Google Drive) ilə əlaqələndirməlisiniz.",
"ThirdPartyStorage": "Üçüncü Tərəf Yaddaşı",
"ThirdPartyStorageDescription": "Ehtiyat nüsxələr üçüncü tərəf yaddaşlarında da saxlana bilər. Bunu etmək üçün əvvəlcə 'İnteqrasiya' bölməsində müvafiq xidmətə qoşulmalısınız. Əks halda, aşağıdakı ayarlar aktivləşdirilməyəcək.",
"ThirdPartyTitleDescription": "Avtorizasiya açarları ilə öz portalınızla üçüncü tərəf xidmətlərini əlaqələndirə bilərsiniz. Facebook, Google və ya LinkedIn ilə asanlıqla giriş edin; Dropbox, OneDrive əlavə edərək Sənədlər modulundan olan fayllar üzərində oradan işləyin.",
"TimeZone": "Saat Qurşağı",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Преди това трябва да свържете съответната услуга в раздела „Интеграция“. В противен случай връзката няма да бъде възможна.",
"ThirdPartyStoragePermanentSettingDescription": "Файловете се съхраняват в {{thirdpartyTitle}} хранилище на трета страна в папката \"{{thirdpartyFolderName}}\".\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "За да свържете хранилище на трета страна, трябва да добавите съответната услуга в секцията Интеграция на настройките на DocSpace. Свържете се със собственика или администратора на DocSpace, за да активирате интеграцията.",
"ThirdPartyStorageTitle": "Хранилища на трети страни",
"ViewOnlyRoomDescription": "Споделяйте всякакви готови документи, отчети, документация и други файлове за преглед.",
"ViewOnlyRoomTitle": "Стая само за преглед"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "На път сте да изтриете тези стаи. Няма да можете да ги възстановите.",
"MoveToTrashButton": "Премести в Кошчето",
"MoveToTrashFile": "На път сте да изтриете този файл? Моля, обърнете внимание, че ако сте го споделили с някого, той ще стане недостъпен. Сигурен ли си, че искаш да продължиш?",
"MoveToTrashFileFromPersonal": "На път сте да изтриете този файл. Сигурни ли сте, че искате да продължите?",
"MoveToTrashFolder": "На път сте да изтриете тази папка? Моля, обърнете внимание, че ако сте го споделили с някого, той ще стане недостъпен. Сигурен ли си, че искаш да продължиш?",
"MoveToTrashFolderFromPersonal": "На път сте да изтриете тази папка. Сигурни ли сте, че искате да продължите?",
"MoveToTrashItems": "На път сте да изтриете тези елементи. Моля, имайте предвид, че ако сте ги споделили с някого, те ще станат недостъпни. Сигурни ли сте, че искате да продължите?",
"MoveToTrashItemsFromPersonal": "На път сте да изтриете тези елементи. Сигурни ли сте, че искате да продължите?",
"MoveToTrashTitle": "Преместване в кошчето?",
"UnsubscribeButton": "Отписване",
"UnsubscribeNote": "Сигурни ли сте, че искате да се отпишете от избраните елементи от списъка?",

View File

@ -1,3 +1,7 @@
{
"SaveOrChange": "Намалете необходимия параметър или запазете текущия си ценови план."
"CannotChangePlan": "Не може да промените плана си, защото броят използвано пространство в хранилището или броя администратори/опитни потребители надвишава лимита на избрания план:",
"ChangePricingPlan": "Променете абонаментния план",
"PlanStorageLimit": "Ограничението на новата тарифа е <1>{{storageValue}}</1> пространство в хранилището, а в момента сте ползвали <1>{{currentStorageValue}}</1>.",
"PlanUsersLimit": "Вие искате да понижите екипа си до <1>{{usersCount}}</1> администратори/опитни потребители, а текущият брой такива потребители във вашият DocSpace е <1>{{currentUsersCount}}</1>.",
"SaveOrChange": "Моля, елиминирайте разликите в проблемните параметри, за да продължите или изберете да активирате абонаментен план."
}

View File

@ -27,7 +27,6 @@
"EditRoom": "Редактиране на стая",
"EmptyFile": "Изпразни файл",
"EmptyFilterDescriptionText": "Нито един файл или папка не пасват на този филтър. Изпробвайте друг или изчистете филтъра, за да видите всички файлове. ",
"EmptyFilterDescriptionTextRooms": "Няма стаи, които отговарят на този филтър. Опитайте с други филтри или ги махнете, за да видите всички стаи.",
"EmptyFilterSubheadingText": "Няма файлове, които да бъдат показани за този филтър тук",
"EmptyFolderDecription": "Пуснете файловете тук или създайте нови",
"EmptyFolderDescriptionUser": "Тук ще се показват файлове и папки, качени от администраторите.",

View File

@ -26,6 +26,7 @@
"FeedUpdateUser": "е назначена ролята {{role}}",
"FileExtension": "Разширение на файл",
"FilesEmptyScreenText": "Вижте подробности за файловете и папките тук",
"HistoryEmptyScreenText": "Историята на дейностите ще бъде показана тук",
"ItemsSelected": "Избрани елементи",
"LastModifiedBy": "Последно модифициран от",
"PendingInvitations": "Чакащи покани",

View File

@ -1,19 +1,19 @@
{
"Ascending": "Възходящ",
"CopyWindowCode": "Копирайте кода за вграждане на прозорец",
"DataDisplay": "Настройки за показване на данни",
"CopyWindowCode": "Копирайте кода за вграждане на прозореца",
"DataDisplay": "Настройки за дисплей на данните",
"Descending": "Низходящ",
"Destroy": "Унищожи",
"EnterCount": "Въведете броя",
"EnterHeight": "Въведете височина",
"EnterCount": "Въведете броят",
"EnterHeight": "Въведете височината",
"EnterId": "Въведете id",
"EnterPage": "Въведете номер на страницата",
"EnterWidth": "Въведете ширина",
"FolderId": "ID на папка",
"FrameId": "ID на рамката",
"Header": "Удар с глава",
"ItemsCount": "Елементите се броят",
"JavascriptSdk": "Javascript SDK",
"EnterPage": "Въведете номера на страницата",
"EnterWidth": "Въведете широчината",
"FolderId": "Id на папката",
"FrameId": "Id на рамката",
"Header": "Заглавие",
"ItemsCount": "Брой елементи",
"JavascriptSdk": "Javascript sdk",
"Menu": "Меню",
"Page": "Страница",
"SearchTerm": "Термин за търсене",

View File

@ -26,7 +26,6 @@
"Payer": "Платец",
"PayerDescription": "Този потребител има достъп до подробности за плащането и е единственият потребител, който може да коригира квотата и да извършва плащания. Собственикът на DocSpace, както и самият управител на плащанията, могат да преназначат ролята на управител на плащанията с помощта на портала за клиенти на Stripe.",
"PaymentOverdue": "Не могат да се добавят нови потребители.",
"PowerUserDescription": "Опитните потребители могат да създават и редактират файлове в стаята, но не могат да създават стаи, да управляват потребители или да осъществяват достъп до настройките.",
"PriceCalculation": "Изчислете цената си",
"QuotaPaidUserLimitError": "Лимитът за платени потребители е достигнат. <1>Плащания</1>",
"RenewSubscription": "Подновете абонамента за плана {{planName}}",

View File

@ -16,7 +16,6 @@
"LogoutBtn": "Изход",
"LogoutDescription": "Забележка. Всички активни връзки с изключение на тази ще бъдат отписани, тъй като тази връзка се използва в момента.",
"LogoutFrom": "Изход от {{platform}} {{browser}}?",
"MessageEmailActivationInstuctionsSentOnEmail": "Инструкциите за активиране на имейла бяха изпратени на имейл адрес <strong>{{ email }}</strong>.",
"MyProfile": "Моят профил",
"ProviderSuccessfullyConnected": "Доставчикът е свързан успешно",
"ProviderSuccessfullyDisconnected": "Връзката с доставчика беше прекъсната успешно",

View File

@ -1,6 +1,5 @@
{
"EmptyRoomsDescription": "Моля, създайте първата стая в Моите стаи.",
"EmptyRoomsHeader": "Тук все още няма стаи",
"RoomList": "Списък със стаи",
"SearchEmptyRoomsDescription": "Няма стаи, които отговарят на този филтър. Опитайте с други филтри или ги махнете, за да видите всички стаи."
"RoomList": "Списък със стаи"
}

View File

@ -139,8 +139,8 @@
"PortalRenaming": "Преименуване на портала",
"PortalRenamingDescription": "Тук можете да промените адреса на вашия портал.",
"PortalRenamingLabelText": "Ново име на портала",
"PortalRenamingMobile": "Въведете частта, която ще се появи до адреса на портала onlyoffice.com/onlyoffice.eu. Моля, обърнете внимание {2}: старият ви портал ще стане достъпен за нови потребители, след като кликнете върху Запази Бутон.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Въведете частта, която ще се появи до адреса на портала onlyoffice.com/onlyoffice.eu.",
"PortalRenamingMobile": "Въведете частта, която ще се появи до адреса на портала {{domain}}. Моля, обърнете внимание: старият ви портал ще стане достъпен за нови потребители, след като кликнете върху Запази Бутон.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Въведете частта, която ще се появи до адреса на портала {{domain}}.",
"ProductUserOpportunities": "Преглед на профили и групи",
"RecoveryFileNotSelected": "Грешка при възстановяване. Файлът за възстановяване не е избран.",
"RestoreBackup": "Възстановяване на данни",
@ -178,7 +178,6 @@
"ThirdPartyPropsDeactivated": "Деактивирано успешно",
"ThirdPartyResource": "Ресурс на трета страна",
"ThirdPartyResourceDescription": "Архивното копие може да бъде запазено във вашия профил от трета страна (Dropbox, Box.com, OneDrive или Google Drive). Трябва да свържете своя профил от трета страна (Dropbox, Box.com, OneDrive или Google Drive) преди да можете да запазите резервното си копие там.",
"ThirdPartyStorage": "Памет за трети страни",
"ThirdPartyStorageDescription": "Архивното копие може да бъде запазено в хранилище на трета страна. Преди това трябва да свържете съответната услуга в секцията 'Интеграция'. В противен случай следните настройки ще бъдат неактивни.",
"ThirdPartyTitleDescription": "С Ключовете за удостоверяване можете да свържете услуги от трето лице към портала си. Влезте лесно с Facebook, Google или LinkedIn; добавете Dropbox, OneDrive и др., за да работите със съхранявани там файлове от Модула за документи.",
"TimeZone": "Часова зона",

View File

@ -24,7 +24,7 @@
"Reactivate": "Znovu aktivovat",
"SetAppButton": "Připojit aplikaci",
"SetAppDescription": "Dvoufázové ověřování je povoleno. Nakonfigurujte aplikaci autentizátoru, abyste mohli pokračovat v práci v DocSpace. Můžete použít aplikaci Google Authenticator pro <1>Android</1> a <4>iOS</4> nebo Authenticator pro <8>Windows Phone</8>.",
"SetAppInstallDescription": "Chcete-li aplikaci připojit, naskenujte kód QR nebo ručně zadejte svůj tajný klíč <1>{{{ secretKey }}</1> a poté zadejte šestimístný kód z aplikace do pole níže.",
"SetAppInstallDescription": "Chcete-li aplikaci připojit, naskenujte kód QR nebo ručně zadejte svůj tajný klíč <1>{{ secretKey }}</1> a poté zadejte šestimístný kód z aplikace do pole níže.",
"SetAppTitle": "Nastavení aplikace autentizačního zařízení",
"SuccessDeactivate": "Váš účet byl úspěšně deaktivován. Za 10 sekund budete přesměrováni na <1>stránku</1>.",
"SuccessReactivate": "Váš účet byl úspěšně reaktivován. Za 10 sekund budete přesměrováni na <1>portál</1>.",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Předtím je třeba připojit příslušnou službu v části „Integrace“. V opačném případě nebude připojení možné.",
"ThirdPartyStoragePermanentSettingDescription": "Soubory jsou uloženy v úložišti třetí strany {{thirdpartyTitle}} ve složce \"{{thirdpartyFolderName}}“.\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "Chcete-li připojit úložiště třetí strany, musíte přidat příslušnou službu v části Integrace v nastavení služby DocSpace. Pro povolení integrace se obraťte na vlastníka nebo správce služby DocSpace.",
"ThirdPartyStorageTitle": "Úložiště třetích stran",
"ViewOnlyRoomDescription": "Sdílejte připravené dokumenty, zprávy, dokumentaci a další soubory k prohlížení.",
"ViewOnlyRoomTitle": "Místnost pouze k prohlížení"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "Tyto místnosti se chystáte smazat. Nebudete je moci obnovit.",
"MoveToTrashButton": "Přesunout do koše",
"MoveToTrashFile": "Chystáte se odstranit tento soubor. Upozorňujeme, že pokud jste jej s někým sdíleli, stane se nedostupným. Soubor bude trvale odstraněn za 30 dní. Určitě chcete pokračovat?",
"MoveToTrashFileFromPersonal": "Chystáte se odstranit tento soubor. Určitě chcete pokračovat?",
"MoveToTrashFolder": "Chystáte se odstranit tuto složku. Upozorňujeme, že pokud jste ji s někým sdíleli, stane se nedostupnou. Opravdu chcete pokračovat?",
"MoveToTrashFolderFromPersonal": "Chystáte se odstranit tuto složku. Určitě chcete pokračovat?",
"MoveToTrashItems": "Chystáte se odstranit tyto položky. Upozorňujeme, že pokud jste je s někým sdíleli, stanou se nedostupnými. Určitě chcete pokračovat?",
"MoveToTrashItemsFromPersonal": "Chystáte se odstranit tyto položky. Určitě chcete pokračovat?",
"MoveToTrashTitle": "Přesunout do koše?",
"UnsubscribeButton": "Zrušit odběr",
"UnsubscribeNote": "Určitě chcete zrušit odběr vybraných položek ze seznamu?",

View File

@ -27,7 +27,6 @@
"EditRoom": "Místnost pro úpravy",
"EmptyFile": "Prázdný soubor",
"EmptyFilterDescriptionText": "Tomuto filtru neodpovídají žádné soubory ani složky. Vyzkoušejte jiný nebo vymažte filtr pro zobrazení všech souborů.",
"EmptyFilterDescriptionTextRooms": "Tomuto filtru neodpovídají žádné místnosti. Vyzkoušejte jiný filtr nebo vymažte filtr pro zobrazení všech místností.",
"EmptyFilterSubheadingText": "Pro tento filtr nejsou žádné soubory k zobrazení",
"EmptyFolderDecription": "Vložte sem soubory nebo vytvořte nové",
"EmptyFolderDescriptionUser": "Zde se objeví soubory a složky nahrané správci.",
@ -45,7 +44,7 @@
"FinalizeVersion": "Dokončit verzi",
"Folder": "Složka",
"FolderRemoved": "Složka přesunuta do koše",
"FolderRenamed": "Složka '{{{folderTitle}}' je přejmenována na '{{newFoldedTitle}}'",
"FolderRenamed": "Složka '{{folderTitle}}' je přejmenována na '{{newFoldedTitle}}'",
"Forms": "Formuláře",
"FormsTemplates": "Šablony formulářů",
"GoToMyRooms": "Přejít do sekce Moje místnosti",

View File

@ -1,22 +1,22 @@
{
"Ascending": "Vzestupně",
"CopyWindowCode": "Kopírovat kód pro vložení okna",
"CopyWindowCode": "Kopírování kódu pro vložení okna",
"DataDisplay": "Nastavení zobrazení dat",
"Descending": "Klesající",
"Descending": "Sestupně",
"Destroy": "Zničit",
"EnterCount": "Zadejte počet",
"EnterHeight": "Zadejte výšku",
"EnterId": "Zadejte ID",
"EnterPage": "Zadejte číselnou stránku",
"EnterId": "Zadejte id",
"EnterPage": "Zadejte číslo stránky",
"EnterWidth": "Zadejte šířku",
"FolderId": "ID složky",
"FrameId": "ID snímku",
"FolderId": "Id složky",
"FrameId": "Id rámu",
"Header": "Záhlaví",
"ItemsCount": "Položky se počítají",
"ItemsCount": "Počet položek",
"JavascriptSdk": "Javascript sdk",
"Menu": "Jídelní lístek",
"Menu": "Menu",
"Page": "Stránka",
"SearchTerm": "Hledaný výraz",
"SortOrder": "Seřadit objednávku",
"SearchTerm": "Hledaný termín",
"SortOrder": "Pořadí řazení",
"WindowParameters": "Parametry okna"
}

View File

@ -26,7 +26,6 @@
"Payer": "Plátce",
"PayerDescription": "Tento uživatel má přístup k platebním údajům a je jediným uživatelem, který může upravovat kvóty a provádět platby. Vlastník prostoru DocSpace, stejně jako samotný správce platby, může roli správce platby přeřadit pomocí zákaznického portálu Stripe.",
"PaymentOverdue": "Nelze přidávat nové uživatele.",
"PowerUserDescription": "Výkonní uživatelé mohou vytvářet a upravovat soubory v místnosti, ale nemohou vytvářet místnosti, spravovat uživatele ani přistupovat k nastavením.",
"PriceCalculation": "Vypočítejte si cenu",
"QuotaPaidUserLimitError": "Byl dosažen limit placených uživatelů. <1>Platby</1>",
"RenewSubscription": "Obnovit předplatné tarifu {{planName}}",

View File

@ -16,7 +16,6 @@
"LogoutBtn": "Odhlášení",
"LogoutDescription": "Poznámka. Všechna aktivní připojení kromě tohoto připojení budou odhlášena, protože jsou právě používána.",
"LogoutFrom": "Odhlášení z {{platform}} {{browser}} ?",
"MessageEmailActivationInstuctionsSentOnEmail": "Pokyny k aktivaci e-mailu byly odeslány na e-mailovou adresu <strong>{{ email }}</strong>.",
"MyProfile": "Můj profil",
"ProviderSuccessfullyConnected": "Poskytovatel úspěšně připojen",
"ProviderSuccessfullyDisconnected": "Poskytovatel úspěšně odpojen",

View File

@ -1,6 +1,5 @@
{
"EmptyRoomsDescription": "Vytvořte první místnost v části Moje místnosti.",
"EmptyRoomsHeader": "Zatím zde nejsou žádné místnosti",
"RoomList": "Seznam místností",
"SearchEmptyRoomsDescription": "Tomuto filtru neodpovídají žádné místnosti. Vyzkoušejte jiný filtr nebo vymažte filtr pro zobrazení všech místností."
"RoomList": "Seznam místností"
}

View File

@ -139,8 +139,8 @@
"PortalRenaming": "Přejmenování portálu",
"PortalRenamingDescription": "Zde můžete změnit Vaši adresu portálu.",
"PortalRenamingLabelText": "Nový název portálu",
"PortalRenamingMobile": "Vložte část, která se objeví vedle onlyoffice.com/onlyoffice.eu portálové adresy. Upozornění: Vaše stará portálová adresa bude dostupná pouze pro uživatele poté, co kliknete na tlačítko Uložit.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Vložte část, která se objeví vedle onlyoffice.com/onlyoffice.eu portálové adresy.",
"PortalRenamingMobile": "Vložte část, která se objeví vedle {{domain}} portálové adresy. Upozornění: Vaše stará portálová adresa bude dostupná pouze pro uživatele poté, co kliknete na tlačítko Uložit.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Vložte část, která se objeví vedle {{domain}} portálové adresy.",
"ProductUserOpportunities": "Zobrazit profily a skupiny",
"RecoveryFileNotSelected": "Chyba při obnově. Soubor pro obnovení nebyl vybrán.",
"RestoreBackup": "Obnova dat",
@ -178,7 +178,6 @@
"ThirdPartyPropsDeactivated": "Úspěšně deaktivováno",
"ThirdPartyResource": "Zdroj třetí strany",
"ThirdPartyResourceDescription": "Zálohu lze uložit na účet třetí strany (Dropbox, Box.com, OneDrive nebo Disk Google). Předtím, než tam budete moci zálohu uložit, musíte účet třetí strany (Dropbox, Box.com, OneDrive nebo Disk Google).",
"ThirdPartyStorage": "Úložiště třetích stran",
"ThirdPartyStorageDescription": "Zálohu lze uložit do úložiště třetí strany. Předtím je třeba připojit příslušnou službu v části 'Integrace'. V opačném případě budou následující nastavení neaktivní.",
"ThirdPartyTitleDescription": "Pomocí autorizačních klíčů můžete k portálu připojit služby třetích stran. Snadno se přihlásíte pomocí Facebooku, Google nebo LinkedIn; z modulu Dokumenty přidáte Dropbox, OneDrive atd. a budete moci pracovat se soubory, které jsou tam uloženy.",
"TimeZone": "Časové pásmo",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Zuvor müssen Sie den entsprechenden Dienst im Abschnitt \"Integration\" verbinden. Andernfalls wird die Verbindung nicht möglich sein.",
"ThirdPartyStoragePermanentSettingDescription": "Die Dateien werden in einem Drittspeicher {{thirdpartyTitle}} im Ordner \"{{thirdpartyFolderName}}\" gespeichert.\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "Um einen Speicherplatz eines Drittanbieters zu verbinden, müssen Sie den entsprechenden Dienst im Abschnitt Integration der DocSpace-Einstellungen hinzufügen. Kontaktieren Sie den DocSpace-Besitzer oder -Administrator, um die Integration zu aktivieren.",
"ThirdPartyStorageTitle": "Speicherdienst von Drittanbietern",
"ViewOnlyRoomDescription": "Teilen Sie fertige Dokumente, Berichte, Dokumentation und anderen Dateien zur Ansicht.",
"ViewOnlyRoomTitle": "Raum nur mit Aussicht"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "Sie möchten diese Räume löschen. Dies kann nicht rückgängig gemacht.",
"MoveToTrashButton": "In den Papierkorb verschieben",
"MoveToTrashFile": "Möchten Sie wirklich das Dokument löschen? Bitte beachten Sie, dass es nicht mehr verfügbar wird, wenn Sie es mit jemandem geteilt haben. Möchten Sie fortsetzen?",
"MoveToTrashFileFromPersonal": "Sie möchten diese Datei löschen. Fortfahren?",
"MoveToTrashFolder": "Möchten Sie wirklich den Ordner löschen? Bitte beachten Sie, dass es nicht mehr verfügbar wird, wenn Sie ihn mit jemandem geteilt haben. Möchten Sie fortsetzen?",
"MoveToTrashFolderFromPersonal": "Sie möchten diesen Ordner löschen. Fortfahren?",
"MoveToTrashItems": "Möchten Sie wirklich diese Elemente löschen? Bitte beachten Sie, dass die Dateien nicht mehr verfügbar werden, wenn Sie diese vorher freigegeben haben. Möchten Sie fortsetzen?",
"MoveToTrashItemsFromPersonal": "Sie löschen diese Objekte. Fortfahren?",
"MoveToTrashTitle": "In Papierkorb verschieben?",
"UnsubscribeButton": "Abbestellen",
"UnsubscribeNote": "Sind Sie sicher, dass Sie die ausgewählten Elemente aus der Liste abbestellen möchten?",

View File

@ -27,7 +27,6 @@
"EditRoom": "Raum bearbeiten",
"EmptyFile": "Leere Datei",
"EmptyFilterDescriptionText": "Keine Dateien oder Ordner entsprechen diesem Filter. Versuchen Sie einen anderen Filter oder entfernen Sie diesen, um alle Dateien zu sehen.",
"EmptyFilterDescriptionTextRooms": "Keine Räume entsprechen diesem Filter. Versuchen Sie einen anderen Filter oder löschen Sie den Filter, um alle Räume anzuzeigen.",
"EmptyFilterSubheadingText": "Hier gibt es keine Dateien, die diesem Filter entsprechen",
"EmptyFolderDecription": "Dateien hier ablegen oder neue erstellen",
"EmptyFolderDescriptionUser": "Von Administratoren hochgeladene Dateien und Ordner werden hier angezeigt.",

View File

@ -1,20 +1,20 @@
{
"Ascending": "Aufsteigend",
"CopyWindowCode": "Fenster-Einbettungscode kopieren",
"DataDisplay": "Einstellungen für die Datenanzeige",
"DataDisplay": "Einstellungen der Datenanzeige",
"Descending": "Absteigend",
"Destroy": "Zerstören",
"EnterCount": "Anzahl eingeben",
"EnterHeight": "Höhe eingeben",
"EnterId": "ID eingeben",
"EnterPage": "Nummernseite eingeben",
"EnterPage": "Seitenzahl eingeben",
"EnterWidth": "Breite eingeben",
"FolderId": "Ordner-ID",
"FrameId": "Frame-ID",
"Header": "Header",
"ItemsCount": "Artikel zählen",
"JavascriptSdk": "Javascript-SDK",
"Menu": "Speisekarte",
"Header": "Kopfzeile",
"ItemsCount": "Anzahl der Artikel",
"JavascriptSdk": "JavaScript-SDK",
"Menu": "Menü",
"Page": "Seite",
"SearchTerm": "Suchbegriff",
"SortOrder": "Sortierreihenfolge",

View File

@ -26,7 +26,6 @@
"Payer": "Zahler",
"PayerDescription": "Dieser Benutzer hat Zugriff auf die Zahlungsdetails und ist der einzige Benutzer, der die Quote anpassen und Zahlungen vornehmen kann. Der DocSpace-Besitzer sowie der zahlende Manager selbst können die Rolle des zahlenden Managers über das Stripe-Kundenportal neu zuweisen.",
"PaymentOverdue": "Es können keine neuen Benutzer hinzugefügt werden.",
"PowerUserDescription": "Hauptbenutzer können Dateien im Raum erstellen und bearbeiten, aber keine Räume erstellen, Benutzer verwalten oder auf Einstellungen zugreifen.",
"PriceCalculation": "Berechnen Sie Ihren Preis",
"QuotaPaidUserLimitError": "Das Limit von Benutzern wurde erreicht. <1>Zahlungen</1>",
"RenewSubscription": "Abonnement des {{planName}}-Plans erneuern",

View File

@ -16,7 +16,6 @@
"LogoutBtn": "Abmelden",
"LogoutDescription": "Hinweis. Alle aktiven Verbindungen mit Ausnahme dieser Verbindung werden abgemeldet, da sie gerade in Gebrauch ist.",
"LogoutFrom": "Abmelden von {{platform}} {{browser}} ?",
"MessageEmailActivationInstuctionsSentOnEmail": "Die Hinweise für die Aktivierung wurden an <strong>{{ email }}</strong> versandt.",
"MyProfile": "Mein Profil",
"ProviderSuccessfullyConnected": "Anbieter erfolgreich verbunden",
"ProviderSuccessfullyDisconnected": "Anbieter erfolgreich getrennt",

View File

@ -1,6 +1,5 @@
{
"EmptyRoomsDescription": "Bitte erstellen Sie den ersten Raum in Meine Räume.",
"EmptyRoomsHeader": "Noch keine Räume vorhanden",
"RoomList": "Raumliste",
"SearchEmptyRoomsDescription": "Keine Räume entsprechen diesem Filter. Versuchen Sie einen anderen Filter oder löschen Sie den Filter, um alle Räume anzuzeigen."
"RoomList": "Raumliste"
}

View File

@ -121,7 +121,7 @@
"PasswordMinLenght": "Minimale Kennwortlänge",
"Path": "Pfad",
"PleaseNote": "Sei bemerkt",
"PleaseNoteDescription": "<0>{{pleaseNote}}</0>: Ihre alte Portal-Adresse steht zu Verfügung für neue Benutzer, sobald Sie die Druckschalter <2>{{save}}</2> klicken.",
"PleaseNoteDescription": "<0>{{pleaseNote}}</0>: sobald Sie auf die Schaltfläche <2>{{save}}</2> klicken, ist Ihre alte Space-Adresse für neue Benutzer nicht mehr verfügbar.",
"Plugins": "Plugins",
"PortalAccess": "Zugang zum Portal",
"PortalAccessSubTitle": "In diesem Bereich können Sie den Benutzern einen sicheren und nahtlosen Zugang zum Portal gewähren.",
@ -139,8 +139,8 @@
"PortalRenaming": "Portalumbenennung",
"PortalRenamingDescription": "Hier können Sie Ihre Portaladresse ändern.",
"PortalRenamingLabelText": "Neuer Portalname",
"PortalRenamingMobile": "Geben Sie den Teil ein, der neben der onlyoffice.com/onlyoffice.eu Portal-Adresse angezeigt wird. Sei bemerkt: Ihre alte Portal-Adresse steht zu Verfügung für neue Benutzer, sobald Sie die Druckschalter Speichern klicken.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Geben Sie den Teil ein, der neben der onlyoffice.com/onlyoffice.eu Portal-Adresse angezeigt wird.",
"PortalRenamingMobile": "Geben Sie den Teil ein, der neben der Adresse des {{domain}}-Space erscheint. Bitte beachten Sie: sobald Sie auf die Schaltfläche Speichern klicken, ist Ihre alte Space-Adresse für neue Benutzer nicht mehr verfügbar.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Geben Sie den Teil ein, der neben der {{domain}} Portal-Adresse angezeigt wird.",
"ProductUserOpportunities": "Profile und Gruppen anschauen",
"RecoveryFileNotSelected": "Fehler bei der Wiederherstellung. Datei zur Wiederherstellung nicht ausgewählt.",
"RestoreBackup": "Datenwiederherstellung",
@ -178,7 +178,6 @@
"ThirdPartyPropsDeactivated": "Deaktivierung erfolgreich",
"ThirdPartyResource": "Ressource eines Drittanbieters",
"ThirdPartyResourceDescription": "Die Sicherungskopie kann in Ihrem Konto bei einem Drittanbieter (Dropbox, Box.com, OneDrive oder Google Drive) gespeichert werden. Sie müssen Ihr Konto (Dropbox, Box.com, OneDrive oder Google Drive) verbinden, bevor Sie Ihr Backup dort speichern können.",
"ThirdPartyStorage": "Drittanbieter",
"ThirdPartyStorageDescription": "Backups können auf einem Speicher eines Drittanbieters gespeichert werden. Zuvor müssen Sie den entsprechenden Dienst im Abschnitt 'Integration' verbinden. Andernfalls sind die folgenden Einstellungen nicht verfügbar",
"ThirdPartyTitleDescription": "Mit Berechtigungsschlüsseln können Sie Ihr Portal mit den Drittleistungen verbinden. Loggen Sie sich einfacher mit Facebook, Google oder LinkedIn. Fügen Sie Dropbox, OneDrive usw. hinzu, um mit dort gespeicherten Dateien aus dem Modul Dokumente zu arbeiten.",
"TimeZone": "Zeitzone",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Πριν, πρέπει να συνδέσετε την αντίστοιχη υπηρεσία στην ενότητα «Ενσωμάτωση». Διαφορετικά, η σύνδεση δεν θα είναι δυνατή.",
"ThirdPartyStoragePermanentSettingDescription": "Τα αρχεία αποθηκεύονται σε έναν αποθηκευτικό χώρο τρίτου μέρους {{thirdpartyTitle}} στον φάκελο \"{{thirdpartyFolderName}}\".\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "Για να συνδέσετε έναν αποθηκευτικό χώρο τρίτου μέρους, πρέπει να προσθέσετε την αντίστοιχη υπηρεσία στην ενότητα «Ενσωμάτωση» των ρυθμίσεων του DocSpace. Επικοινωνήστε με τον ιδιοκτήτη ή τον διαχειριστή του DocSpace για να ενεργοποιήσετε την ενσωμάτωση.",
"ThirdPartyStorageTitle": "Αποθήκευση τρίτου μέρους",
"ViewOnlyRoomDescription": "Κοινή χρήση τυχόν έτοιμων εγγράφων, αναφορών, τεκμηρίωσης και άλλων αρχείων για προβολή.",
"ViewOnlyRoomTitle": "Δωμάτιο μόνο για προβολή"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "Πρόκειται να διαγράψετε αυτά τα δωμάτια. Δεν θα μπορέσετε να τα επαναφέρετε.",
"MoveToTrashButton": "Μετακίνηση στον Κάδο απορριμμάτων",
"MoveToTrashFile": "Πρόκειται να διαγράψετε αυτό το αρχείο. Λάβετε υπόψη ότι αν το έχετε μοιραστεί με κάποιον, δεν θα είναι διαθέσιμο. Το αρχείο θα διαγραφεί οριστικά σε 30 ημέρες. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashFileFromPersonal": "Πρόκειται να διαγράψετε αυτό το αρχείο. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashFolder": "Πρόκειται να διαγράψετε αυτόν τον φάκελο. Λάβετε υπόψη ότι αν τον έχετε μοιραστεί με κάποιον, δεν θα είναι διαθέσιμος. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashFolderFromPersonal": "Πρόκειται να διαγράψετε αυτόν τον φάκελο. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashItems": "Πρόκειται να διαγράψετε αυτά τα στοιχεία. Λάβετε υπόψη ότι αν τα έχετε μοιραστεί με κάποιον, θα γίνουν μη διαθέσιμα. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashItemsFromPersonal": "Πρόκειται να διαγράψετε αυτά τα στοιχεία. Θέλετε σίγουρα να συνεχίσετε;",
"MoveToTrashTitle": "Μετακίνηση στον κάδο απορριμμάτων;",
"UnsubscribeButton": "Κατάργηση εγγραφής",
"UnsubscribeNote": "Θέλετε σίγουρα να καταργήσετε την εγγραφή σας από τα επιλεγμένα στοιχεία της λίστας;",

View File

@ -17,7 +17,7 @@
"CollaborationRooms": "Συνεργασία",
"ContainsSpecCharacter": "Ο τίτλος δεν μπορεί να περιέχει τους ακόλουθους χαρακτήρες: *+:\"<>?|/",
"Convert": "Μετατροπή",
"CopyItem": "Το <strong>{{{title}}</strong> αντιγράφηκε",
"CopyItem": "Το <strong>{{title}}</strong> αντιγράφηκε",
"CopyItems": "<strong> {{qty}} </strong> στοιχεία αντιγράφηκαν",
"CreateRoom": "Δημιουργία δωματίου",
"CustomRooms": "Προσαρμοσμένα",
@ -27,7 +27,6 @@
"EditRoom": "Επεξεργασία δωματίου",
"EmptyFile": "Κενό αρχείο",
"EmptyFilterDescriptionText": "Με αυτό το φίλτρο δεν ταιριάζει κανένα αρχείο ή φάκελος. Δοκιμάστε ένα διαφορετικό ή καταργήστε το φίλτρο για να δείτε όλα τα αρχεία.",
"EmptyFilterDescriptionTextRooms": "Δεν υπάρχουν δωμάτια που να ταιριάζουν σε αυτό το φίλτρο. Δοκιμάστε μια άλλη επιλογή ή καταργήστε το φίλτρο για να δείτε όλα τα δωμάτια.",
"EmptyFilterSubheadingText": "Δεν υπάρχουν αρχεία για εμφάνιση για αυτό το φίλτρο",
"EmptyFolderDecription": "Αποθέστε εδώ αρχεία ή δημιουργήστε νέα",
"EmptyFolderDescriptionUser": "Τα αρχεία και οι φάκελοι που ανεβάζουν οι διαχειριστές θα εμφανίζονται εδώ.",
@ -58,7 +57,7 @@
"MarkRead": "Σήμανση ως αναγνωσμένου",
"MarkedAsFavorite": "Προστέθηκε στα αγαπημένα",
"Media": "Πολυμέσα",
"MoveItem": "Το <strong>{{{title}}</strong> μετακινήθηκε",
"MoveItem": "Το <strong>{{title}}</strong> μετακινήθηκε",
"MoveItems": "<strong>{{qty}}</strong> στοιχεία έχουν μετακινηθεί",
"MoveOrCopy": "Μετακίνηση ή αντιγραφή",
"MoveTo": "Μετακίνηση σε",

View File

@ -1,22 +1,22 @@
{
"Ascending": "Ανερχόμενος",
"CopyWindowCode": "Αντιγραφή κώδικα ενσωμάτωσης παραθύρου",
"Ascending": "Αύξουσα",
"CopyWindowCode": "Αντιγραφή του κώδικα ενσωμάτωσης του παραθύρου",
"DataDisplay": "Ρυθμίσεις εμφάνισης δεδομένων",
"Descending": "Φθίνων",
"Destroy": "Καταστρέφω",
"EnterCount": "Εισαγάγετε τον αριθμό",
"EnterHeight": "Εισαγάγετε ύψος",
"EnterId": "Εισαγάγετε το αναγνωριστικό",
"EnterPage": "Εισαγάγετε τη σελίδα αριθμού",
"EnterWidth": "Εισαγάγετε πλάτος",
"Descending": "Φθίνουσα",
"Destroy": "Καταστροφή",
"EnterCount": "Εισάγετε μέτρηση",
"EnterHeight": "Εισάγετε ύψος",
"EnterId": "Εισάγετε αναγνωριστικού",
"EnterPage": "Εισάγετε αριθμό σελίδας",
"EnterWidth": "Εισάγετε πλάτος",
"FolderId": "Αναγνωριστικό φακέλου",
"FrameId": "Ταυτότητα πλαισίου",
"Header": "Επί κεφαλής",
"ItemsCount": "Τα στοιχεία μετράνε",
"FrameId": "Αναγνωριστικό πλαισίου",
"Header": "Κεφαλίδα",
"ItemsCount": "Αριθμός στοιχείων",
"JavascriptSdk": "Javascript sdk",
"Menu": "Μενού",
"Page": "Σελίδα",
"SearchTerm": "Ορος αναζήτησης",
"SearchTerm": "Όρος αναζήτησης",
"SortOrder": "Σειρά ταξινόμησης",
"WindowParameters": "Παράμετροι παραθύρου"
}

View File

@ -26,7 +26,6 @@
"Payer": "Πληρωτής",
"PayerDescription": "Αυτός ο χρήστης έχει πρόσβαση στα στοιχεία πληρωμής και είναι ο μόνος χρήστης που μπορεί να προσαρμόσει την ποσόστωση και να πραγματοποιήσει πληρωμές. Ο ιδιοκτήτης του DocSpace, καθώς και ο ίδιος ο διαχειριστής πληρωμών, μπορούν να αναθέσουν εκ νέου το ρόλο του διαχειριστή πληρωμών χρησιμοποιώντας την πύλη πελατών της Stripe.",
"PaymentOverdue": "Δεν είναι δυνατή η προσθήκη νέων χρηστών.",
"PowerUserDescription": "Οι χρήστες ισχύος μπορούν να δημιουργήσουν και να επεξεργαστούν αρχεία στο δωμάτιο, αλλά δεν μπορούν να δημιουργήσουν δωμάτια, να διαχειριστούν χρήστες ή να έχουν πρόσβαση στις ρυθμίσεις.",
"PriceCalculation": "Υπολογίστε την τιμή σας",
"QuotaPaidUserLimitError": "Έχει επιτευχθεί το όριο των χρηστών με πληρωμή. <1>Πληρωμές</1>",
"RenewSubscription": "Ανανεώστε τη συνδρομή στο πρόγραμμα {{planName}}",

View File

@ -16,7 +16,6 @@
"LogoutBtn": "Αποσύνδεση",
"LogoutDescription": "Σημείωση. Όλες οι ενεργές συνδέσεις θα τερματιστούν, εκτός από αυτήν τη σύνδεση, καθώς χρησιμοποιείται αυτήν τη στιγμή.",
"LogoutFrom": "Αποσύνδεση από {{platform}} {{browser}};",
"MessageEmailActivationInstuctionsSentOnEmail": "Οι οδηγίες ενεργοποίησης email έχουν σταλεί στη διεύθυνση email <strong>{{ email }}</strong>.",
"MyProfile": "Το προφίλ μου",
"ProviderSuccessfullyConnected": "Ο πάροχος συνδέθηκε επιτυχώς",
"ProviderSuccessfullyDisconnected": "Ο πάροχος αποσυνδέθηκε επιτυχώς",

View File

@ -1,6 +1,5 @@
{
"EmptyRoomsDescription": "Δημιουργήστε το πρώτο δωμάτιο στο «Τα δωμάτια μου».",
"EmptyRoomsHeader": "Δεν υπάρχουν ακόμα δωμάτια εδώ",
"RoomList": "Λίστα δωματίων",
"SearchEmptyRoomsDescription": "Δεν υπάρχουν δωμάτια που να ταιριάζουν σε αυτό το φίλτρο. Δοκιμάστε μια άλλη επιλογή ή καταργήστε το φίλτρο για να δείτε όλα τα δωμάτια."
"RoomList": "Λίστα δωματίων"
}

View File

@ -95,8 +95,8 @@
"IPSecurityHelper": "Μπορείτε να ορίσετε τις επιτρεπόμενες διευθύνσεις IP χρησιμοποιώντας είτε ακριβείς διευθύνσεις IP στη μορφή IPv4 (#.#.#.#.#, όπου # είναι μια αριθμητική τιμή από 0 έως 255) είτε εύρος IP (στη μορφή #.#.#.#.#-#.#.#.#.#.#).",
"IPSecurityWarningHelper": "Αρχικά, πρέπει να καθορίσετε την τρέχουσα IP σας ή την περιοχή IP στην οποία ανήκει η τρέχουσα διεύθυνση IP σας, διαφορετικά η πρόσβαση στον χώρο θα μπλοκαριστεί αμέσως μετά την αποθήκευση των ρυθμίσεων. Ο ιδιοκτήτης του χώρου θα έχει πρόσβαση στον χώρο από οποιαδήποτε διεύθυνση IP.",
"LanguageAndTimeZoneSettingsDescription": "Αλλάξτε τη γλώσσα για όλους τους χρήστες της πύλης και ρυθμίστε τη ζώνη ώρας, ώστε όλα τα συμβάντα της πύλης να εμφανίζονται με τη σωστή ημερομηνία και ώρα.",
"LanguageTimeSettingsTooltip": "<0>{{text}}</0>: είναι ένας τρόπος για να αλλάξετε τη γλώσσα ολόκληρης της πύλης για όλους τους χρήστες της πύλης και να ρυθμίσετε τη ζώνη ώρας, ώστε όλα τα γεγονότα της πύλης {{ organizationName }} να εμφανίζονται με τη σωστή ημερομηνία και ώρα",
"LanguageTimeSettingsTooltipDescription": "Για να τεθούν σε ισχύ οι παράμετροι που ορίσατε κάντε κλικ στο κουμπί <1>{{save}}</1> στο κάτω μέρος της ενότητας.<3>{{{learnMore}}</3>",
"LanguageTimeSettingsTooltip": "<0>{{text}}</0>: είναι ένας τρόπος για να αλλάξετε τη γλώσσα ολόκληρης της πύλης για όλους τους χρήστες της πύλης και να ρυθμίσετε τη ζώνη ώρας, ώστε όλα τα γεγονότα της πύλης {{ organizationName }} να εμφανίζονται με τη σωστή ημερομηνία και ώρα.",
"LanguageTimeSettingsTooltipDescription": "Για να τεθούν σε ισχύ οι παράμετροι που ορίσατε κάντε κλικ στο κουμπί <1>{{save}}</1> στο κάτω μέρος της ενότητας.<3>{{learnMore}}</3>",
"Lifetime": "Διάρκεια ζωής (λεπτά)",
"LimitThemesTooltip": "Μπορείτε να δημιουργήσετε μόνο 3 προσαρμοσμένα θέματα. Για να δημιουργήσετε ένα νέο, πρέπει να διαγράψετε ένα από τα προηγούμενα θέματα.",
"LocalFile": "Τοπικό αρχείο",
@ -121,7 +121,7 @@
"PasswordMinLenght": "Ελάχιστο μήκος συνθηματικού",
"Path": "Μονοπάτι",
"PleaseNote": "Έχετε υπόψιν",
"PleaseNoteDescription": "< 0>{{pleaseNote}}</0>: η παλιά διεύθυνση της πύλης σας θα γίνει διαθέσιμη στους νέους χρήστες μόλις κάνετε κλικ στο κουμπί <2>{{{save}}</2>.",
"PleaseNoteDescription": "< 0>{{pleaseNote}}</0>: η παλιά διεύθυνση της πύλης σας θα γίνει διαθέσιμη στους νέους χρήστες μόλις κάνετε κλικ στο κουμπί <2>{{save}}</2>.",
"Plugins": "Πρόσθετα",
"PortalAccess": "Πρόσβαση στην πύλη",
"PortalAccessSubTitle": "Αυτή η ενότητα σάς επιτρέπει να παρέχετε στους χρήστες ασφαλείς και βολικούς τρόπους πρόσβασης στην πύλη.",
@ -139,8 +139,8 @@
"PortalRenaming": "Μετονομασία πύλης",
"PortalRenamingDescription": "Εδώ μπορείτε να αλλάξετε τη διεύθυνση της πύλης σας.",
"PortalRenamingLabelText": "Νέο όνομα πύλης",
"PortalRenamingMobile": "Εισαγάγετε το μέρος που θα εμφανίζεται δίπλα στη διεύθυνση της πύλης onlyoffice.com/onlyoffice.eu. Σημείωση: η παλιά διεύθυνση της πύλης σας θα γίνει διαθέσιμη για τους νέους χρήστες μόλις κάνετε κλικ στο κουμπί Αποθήκευση.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Εισαγάγετε το μέρος που θα εμφανίζεται δίπλα στη διεύθυνση της πύλης onlyoffice.com/onlyoffice.eu.",
"PortalRenamingMobile": "Εισαγάγετε το μέρος που θα εμφανίζεται δίπλα στη διεύθυνση της πύλης {{domain}}. Σημείωση: η παλιά διεύθυνση της πύλης σας θα γίνει διαθέσιμη για τους νέους χρήστες μόλις κάνετε κλικ στο κουμπί Αποθήκευση.",
"PortalRenamingSettingsTooltip": "<0>{{text}}</0> Εισαγάγετε το μέρος που θα εμφανίζεται δίπλα στη διεύθυνση της πύλης {{domain}}.",
"ProductUserOpportunities": "Προβολή προφίλ και ομάδων",
"RecoveryFileNotSelected": "Σφάλμα ανάκτησης. Το αρχείο ανάκτησης δεν έχει επιλεγεί.",
"RestoreBackup": "Επαναφορά Δεδομένων",
@ -178,7 +178,6 @@
"ThirdPartyPropsDeactivated": "Απενεργοποιήθηκε με επιτυχία",
"ThirdPartyResource": "Πόρος τρίτου μέρους",
"ThirdPartyResourceDescription": "Το αντίγραφο ασφαλείας μπορεί να αποθηκευτεί στον λογαριασμό τρίτου μέρους σας (Dropbox, Box.com, OneDrive ή Google Drive). Πρέπει να συνδέσετε τον λογαριασμό τρίτου μέρους σας (Dropbox, Box.com, OneDrive ή Google Drive) πριν μπορέσετε να αποθηκεύσετε το αντίγραφο ασφαλείας σας εκεί.",
"ThirdPartyStorage": "Αποθήκευση τρίτων",
"ThirdPartyStorageDescription": "Το αντίγραφο ασφαλείας μπορεί να αποθηκευτεί σε αποθηκευτικό χώρο τρίτου μέρους. Πριν από αυτό, πρέπει να συνδέσετε την αντίστοιχη υπηρεσία στην ενότητα 'Ενοποίηση'. Διαφορετικά, οι παρακάτω ρυθμίσεις θα είναι ανενεργές.",
"ThirdPartyTitleDescription": "Με τα κλειδιά εξουσιοδότησης, μπορείτε να συνδέσετε υπηρεσίες τρίτων μερών στην πύλη σας. Συνδεθείτε εύκολα με το Facebook, το Google ή το LinkedIn, προσθέστε το Dropbox, το OneDrive κ.λπ. για να εργάζεστε με αρχεία που είναι αποθηκευμένα εκεί από την ενότητα Έγγραφα.",
"TimeZone": "Ζώνη ώρας",

View File

@ -5,7 +5,7 @@
"CopyExternalLink": "Αντιγραφή εξωτερικού συνδέσμου",
"CustomFilter": "Προσαρμοσμένο φίλτρο",
"DenyAccess": "Άρνηση πρόσβασης",
"EncryptedFileSharing": "Το αρχείο <strong>{{{title}}</strong> κοινοποιήθηκε επιτυχώς",
"EncryptedFileSharing": "Το αρχείο <strong>{{title}}</strong> κοινοποιήθηκε επιτυχώς",
"ExternalLink": "Εξωτερικός σύνδεσμος",
"FormFilling": "Συμπλήρωση εντύπων",
"InternalLink": "Εσωτερικός σύνδεσμος",

View File

@ -22,7 +22,6 @@
"ThirdPartyStorageNoStorageAlert": "Before, you need to connect the corresponding service in the “Integration” section. Otherwise, the connection will not be possible.",
"ThirdPartyStoragePermanentSettingDescription": "Files are stored in a third-party {{thirdpartyTitle}} storage in the \"{{thirdpartyFolderName}}\" folder.\n<strong>{{thirdpartyPath}}</strong>",
"ThirdPartyStorageRoomAdminNoStorageAlert": "To connect a third-party storage, you need to add the corresponding service in the Integration section of DocSpace settings. Contact DocSpace owner or administrator to enable the integration.",
"ThirdPartyStorageTitle": "Third-party storage",
"ViewOnlyRoomDescription": "Share any ready documents, reports, documentation, and other files for viewing.",
"ViewOnlyRoomTitle": "View-only room"
}

View File

@ -6,11 +6,9 @@
"DeleteRooms": "You are about to delete these rooms. You wont be able to restore them.",
"MoveToTrashButton": "Move to Trash",
"MoveToTrashFile": "You are about to delete this file. Please note that if you have shared it with someone, it will become unavailable. The file will be permanently deleted in 30 days. Are you sure you want to continue?",
"MoveToTrashFileFromPersonal": "You are about to delete this file. Are you sure you want to continue?",
"MoveToTrashFolder": "You are about to delete this folder. Please note that if you have shared it with someone, it will become unavailable. Are you sure you want to continue?",
"MoveToTrashFolderFromPersonal": "You are about to delete this folder. Are you sure you want to continue?",
"MoveToTrashItems": "You are about to delete these items. Please note that if you have shared them with someone, they will become unavailable. Are you sure you want to continue?",
"MoveToTrashItemsFromPersonal": "You are about to delete these items. Are you sure you want to continue?",
"MoveToTrashTitle": "Move to Trash?",
"UnsubscribeButton": "Unsubscribe",
"UnsubscribeNote": "Are you sure you want to unsubscribe from the selected items from the list?",

Some files were not shown because too many files have changed in this diff Show More