Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
freedombone
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Context Sensitive Group
freedombone
Commits
c83e73fc
Commit
c83e73fc
authored
8 years ago
by
Bob Mottram
Browse files
Options
Downloads
Patches
Plain Diff
Syncthing support
parent
edcc47de
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/freedombone
+86
-12
86 additions, 12 deletions
src/freedombone
src/freedombone-backup-local
+1
-1
1 addition, 1 deletion
src/freedombone-backup-local
src/freedombone-syncthing
+273
-0
273 additions, 0 deletions
src/freedombone-syncthing
with
360 additions
and
13 deletions
src/freedombone
+
86
−
12
View file @
c83e73fc
...
...
@@ -239,6 +239,15 @@ OWNCLOUD_ADMIN_PASSWORD=
OWNCLOUD_PATH=/var/www/owncloud
OWNCLOUD_UPGRADE_PATH=/root/owncloud_upgrade
SYNCTHING_ID=
SYNCTHING_CONFIG_PATH=/root/.config/syncthing
SYNCTHING_CONFIG_FILE=$SYNCTHING_CONFIG_PATH/config.xml
SYNCTHING_RELAY_SERVER='https://relays.syncthing.net/endpoint'
SYNCTHING_RELEASES='https://api.github.com/repos/syncthing/syncthing/releases?per_page=30'
SYNCTHING_PORT=22000
SYNCTHING_SHARED_DATA=/var/lib/syncthing/SyncShared
SYNCTHING_USER_IDS_FILE='.syncthingids'
# Domain name for your wiki
WIKI_DOMAIN_NAME=
WIKI_ADMIN_PASSWORD=
...
...
@@ -1071,6 +1080,27 @@ function read_configuration {
if [[ $CONFIGURATION_FILE != "/root/${PROJECT_NAME}.cfg" ]]; then
cp $CONFIGURATION_FILE /root/${PROJECT_NAME}.cfg
fi
if grep -q "SYNCTHING_ID" $CONFIGURATION_FILE; then
SYNCTHING_ID=$(grep "SYNCTHING_ID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_CONFIG_PATH" $CONFIGURATION_FILE; then
SYNCTHING_CONFIG_PATH=$(grep "SYNCTHING_CONFIG_PATH" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_CONFIG_FILE" $CONFIGURATION_FILE; then
SYNCTHING_CONFIG_FILE=$(grep "SYNCTHING_CONFIG_FILE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_RELAY_SERVER" $CONFIGURATION_FILE; then
SYNCTHING_RELAY_SERVER=$(grep "SYNCTHING_RELAY_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_RELEASES" $CONFIGURATION_FILE; then
SYNCTHING_RELEASES=$(grep "SYNCTHING_RELEASES" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_PORT" $CONFIGURATION_FILE; then
SYNCTHING_PORT=$(grep "SYNCTHING_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "SYNCTHING_SHARED_DATA" $CONFIGURATION_FILE; then
SYNCTHING_SHARED_DATA=$(grep "SYNCTHING_SHARED_DATA" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "VOIP_TURN_PORT" $CONFIGURATION_FILE; then
VOIP_TURN_PORT=$(grep "VOIP_TURN_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
...
...
@@ -1557,7 +1587,7 @@ function rss_reader_modifications {
if [ ! -d $RSS_READER_PATH ]; then
return
fi
# ensure that socks5 proxy is used
if ! grep -q "CURLOPT_PROXYTYPE" $RSS_READER_PATH/plugins/af_unburn/init.php; then
sed -i '/curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);/a \\t\t\t\t\tcurl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);' $RSS_READER_PATH/plugins/af_unburn/init.php
...
...
@@ -1614,13 +1644,13 @@ function set_repo_commit {
systemctl restart gogs
fi
if [[ $repo_dir == *"toxcore" ]]; then
sed -i 's|ExecStart=.*|ExecStart=/usr/local/bin/tox-bootstrapd --config /etc/tox-bootstrapd.conf|g' $rootdir/etc/systemd/system/tox-bootstrapd.service
autoreconf -i
./configure --enable-daemon
make
make install
systemctl daemon-reload
systemctl restart tox-bootstrapd.service
sed -i 's|ExecStart=.*|ExecStart=/usr/local/bin/tox-bootstrapd --config /etc/tox-bootstrapd.conf|g' $rootdir/etc/systemd/system/tox-bootstrapd.service
autoreconf -i
./configure --enable-daemon
make
make install
systemctl daemon-reload
systemctl restart tox-bootstrapd.service
fi
if [[ $repo_dir == *"toxic" ]]; then
make
...
...
@@ -6213,6 +6243,49 @@ function upgrade_owncloud_start {
fi
}
function install_syncthing {
if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
return
fi
if grep -Fxq "install_syncthing" $COMPLETION_FILE; then
return
fi
apt-get -y install curl
curl -s https://syncthing.net/release-key.txt | apt-key add -
echo "deb http://apt.syncthing.net/ syncthing release" | tee /etc/apt/sources.list.d/syncthing.list
apt-get update
apt-get -y install syncthing
# This probably does need to run as root so that it can access the Sync directories
# in each user's home directory
echo '[Unit]' > /etc/systemd/system/syncthing.service
echo 'Description=Syncthing - Open Source Continuous File Synchronization' >> /etc/systemd/system/syncthing.service
echo 'Documentation=man:syncthing(1)' >> /etc/systemd/system/syncthing.service
echo 'After=network.target' >> /etc/systemd/system/syncthing.service
echo 'Wants=syncthing-inotify@.service' >> /etc/systemd/system/syncthing.service
echo '' >> /etc/systemd/system/syncthing.service
echo '[Service]' >> /etc/systemd/system/syncthing.service
echo 'User=root' >> /etc/systemd/system/syncthing.service
echo 'ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0' >> /etc/systemd/system/syncthing.service
echo 'Restart=on-failure' >> /etc/systemd/system/syncthing.service
echo 'SuccessExitStatus=3 4' >> /etc/systemd/system/syncthing.service
echo 'RestartForceExitStatus=3 4' >> /etc/systemd/system/syncthing.service
echo '' >> /etc/systemd/system/syncthing.service
echo '[Install]' >> /etc/systemd/system/syncthing.service
echo 'WantedBy=multi-user.target' >> /etc/systemd/system/syncthing.service
systemctl enable syncthing
systemctl daemon-reload
systemctl start syncthing
if ! grep -q "syncthing" /etc/crontab; then
echo "* * * * * root ${PROJECT_NAME}-syncthing > /dev/null" >> /etc/crontab
fi
echo 'install_syncthing' >> $COMPLETION_FILE
}
function upgrade_owncloud_finish {
# copies data from a temporary upgrade directory to the new
# owncloud install
...
...
@@ -7345,7 +7418,7 @@ function install_irc_server {
if [ ! $IRC_PASSWORD ]; then
IRC_PASSWORD="$(openssl rand -base64 32 | cut -c1-10)"
fi
echo '**************************************************' > /etc/ngircd/motd
echo $'* F R E E D O M B O N E I R C *' >> /etc/ngircd/motd
echo '* *' >> /etc/ngircd/motd
...
...
@@ -8349,7 +8422,7 @@ function install_rss_reader {
RSS_READER_ADMIN_PASSWORD_HASH=$(echo -n "${RSS_READER_ADMIN_PASSWORD}" | sha1sum | awk -F ' ' '{print $1}')
mysql -u root --password="$MARIADB_PASSWORD" -e "update ttrss_users set pwd_hash = 'SHA1:${RSS_READER_ADMIN_PASSWORD_HASH}', salt= '' WHERE login = 'admin';" ttrss
rss_reader_modifications
rss_reader_modifications
configure_php
...
...
@@ -9668,7 +9741,7 @@ function install_mediagoblin {
chown -hR mediagoblin:www-data /var/log/mediagoblin
mkdir /var/run/mediagoblin
chown -hR mediagoblin:www-data /var/run/mediagoblin
if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
echo $'mediagoblin.ini not found'
exit 737529
...
...
@@ -10835,7 +10908,8 @@ script_for_attaching_usb_drive
install_web_server
install_web_server_access_control
configure_firewall_for_web_server
install_owncloud_official_deb
install_syncthing
#install_owncloud_official_deb
upgrade_golang
install_gogs
install_xmpp
...
...
This diff is collapsed.
Click to expand it.
src/freedombone-backup-local
+
1
−
1
View file @
c83e73fc
...
...
@@ -273,7 +273,7 @@ function backup_users {
# Backup user files
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
]]
;
then
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
# Backup any gpg keys
if
[
-d
/home/
$USERNAME
/.gnupg
]
;
then
...
...
This diff is collapsed.
Click to expand it.
src/freedombone-syncthing
0 → 100755
+
273
−
0
View file @
c83e73fc
#!/bin/bash
#
# .---. . .
# | | |
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
#
# Freedom in the Cloud
#
# Checks for changed syncthing device IDs within user home directories
# and then recreates the syncthing configuration file accordingly
#
# License
# =======
#
# Copyright (C) 2016 Bob Mottram <bob@robotics.uk.to>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
NO_OF_ARGS
=
$#
PROJECT_NAME
=
'freedombone'
export
TEXTDOMAIN
=
$PROJECT_NAME
-syncthing
export
TEXTDOMAINDIR
=
"/usr/share/locale"
# File which keeps track of what has already been installed
COMPLETION_FILE
=
$HOME
/
${
PROJECT_NAME
}
-completed
.txt
SYNCTHING_ID
=
SYNCTHING_CONFIG_PATH
=
/root/.config/syncthing
SYNCTHING_CONFIG_FILE
=
$SYNCTHING_CONFIG_PATH
/config.xml
SYNCTHING_RELAY_SERVER
=
'https://relays.syncthing.net/endpoint'
SYNCTHING_RELEASES
=
'https://api.github.com/repos/syncthing/syncthing/releases?per_page=30'
SYNCTHING_PORT
=
22000
SYNCTHING_SHARED_DATA
=
/var/lib/syncthing/SyncShared
SYNCTHING_USER_IDS_FILE
=
'.syncthingids'
CHANGED
=
TEMP_IDS_FILE
=
/root/.synthingids
function
new_syncthing_id
{
for
i
in
{
1..8
}
do
v
=
""
for
j
in
{
1..2
}
do
v2
=
`
echo
"obase=16;
$RANDOM
"
| bc
`
v
=
$v$v2
done
v
=
$(
echo
"
$v
"
|
cut
-c1-7
)
if
[[
${
i
}
< 8
]]
;
then
v
=
$v
"-"
fi
echo
-n
"
$v
"
done
echo
"
$v
"
}
function
create_syncthing_config
{
if
grep
-q
"Syncthing ID"
$COMPLETION_FILE
;
then
SYNCTHING_ID
=
$(
cat
$COMPLETION_FILE
|
grep
"Syncthing ID"
|
awk
-F
':'
'{print $2}'
)
else
if
[
-f
$SYNCTHING_CONFIG_FILE
]
;
then
SYNCTHING_ID
=
$(
cat
$SYNCTHING_CONFIG_FILE
|
grep
"device id="
|
head
-n
1 |
awk
-F
'"'
'{print $2}'
)
else
SYNCTHING_ID
=
$(
new_syncthing_id
)
fi
fi
if
!
grep
-q
"Syncthing ID"
$COMPLETION_FILE
;
then
echo
"Syncthing ID:
$SYNCTHING_ID
"
>>
$COMPLETION_FILE
else
sed
-i
"s|Syncthing ID.*|Syncthing ID:
$SYNCTHING_ID
|g"
$COMPLETION_FILE
fi
if
[
!
-d
$SYNCTHING_CONFIG_PATH
]
;
then
mkdir
-p
$SYNCTHING_CONFIG_PATH
fi
if
[
!
-d
$SYNCTHING_SHARED_DATA
]
;
then
mkdir
-p
$SYNCTHING_SHARED_DATA
fi
echo
'<configuration version="12">'
>
$SYNCTHING_CONFIG_FILE
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
echo
" <folder id=
\"
$USERNAME
\"
path=
\"
/home/
$USERNAME
/Sync/
\"
ro=
\"
false
\"
rescanIntervalS=
\"
60
\"
ignorePerms=
\"
false
\"
autoNormalize=
\"
true
\"
>"
>>
$SYNCTHING_CONFIG_FILE
# include any specified device IDs for this user
if
[
-f
/home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
]
;
then
echo
""
>
$TEMP_IDS_FILE
while
read
-r
line
||
[[
-n
"
$line
"
]]
;
do
if
[[
$line
!=
*
"#"
*
&&
$line
!=
*
"*"
*
&&
$line
!=
*
'/'
*
&&
$line
==
*
"-"
*
]]
;
then
if
[
${#
line
}
-gt
10
]
;
then
if
!
grep
-q
"
$line
"
$TEMP_IDS_FILE
;
then
echo
" <device id=
\"
$line
\"
></device>"
>>
$SYNCTHING_CONFIG_FILE
echo
"
$line
"
>>
$TEMP_IDS_FILE
fi
fi
fi
done
< /home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
rm
$TEMP_IDS_FILE
fi
echo
" <device id=
\"
$SYNCTHING_ID
\"
></device>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <minDiskFreePct>1</minDiskFreePct>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <versioning></versioning>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <copiers>0</copiers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullers>0</pullers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <hashers>0</hashers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <order>random</order>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <ignoreDelete>false</ignoreDelete>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <scanProgressIntervalS>0</scanProgressIntervalS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullerSleepS>0</pullerSleepS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullerPauseS>0</pullerPauseS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <maxConflicts>10</maxConflicts>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <disableSparseFiles>false</disableSparseFiles>'
>>
$SYNCTHING_CONFIG_FILE
echo
' </folder>'
>>
$SYNCTHING_CONFIG_FILE
fi
done
echo
" <folder id=
\"
shared
\"
path=
\"
$SYNCTHING_SHARED_DATA
/
\"
ro=
\"
false
\"
rescanIntervalS=
\"
60
\"
ignorePerms=
\"
false
\"
autoNormalize=
\"
true
\"
>"
>>
$SYNCTHING_CONFIG_FILE
# all user devices may access this shared directory
echo
""
>
$TEMP_IDS_FILE
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
if
[
-f
/home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
]
;
then
while
read
-r
line
||
[[
-n
"
$line
"
]]
;
do
if
[[
$line
!=
*
"#"
*
&&
$line
!=
*
"*"
*
&&
$line
!=
*
'/'
*
&&
$line
==
*
"-"
*
]]
;
then
if
[
${#
line
}
-gt
10
]
;
then
if
!
grep
-q
"
$line
"
$TEMP_IDS_FILE
;
then
echo
" <device id=
\"
$line
\"
></device>"
>>
$SYNCTHING_CONFIG_FILE
echo
"
$line
"
>>
$TEMP_IDS_FILE
fi
fi
fi
done
< /home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
fi
fi
done
rm
$TEMP_IDS_FILE
echo
" <device id=
\"
$SYNCTHING_ID
\"
></device>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <minDiskFreePct>1</minDiskFreePct>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <versioning></versioning>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <copiers>0</copiers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullers>0</pullers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <hashers>0</hashers>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <order>random</order>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <ignoreDelete>false</ignoreDelete>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <scanProgressIntervalS>0</scanProgressIntervalS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullerSleepS>0</pullerSleepS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <pullerPauseS>0</pullerPauseS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <maxConflicts>10</maxConflicts>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <disableSparseFiles>false</disableSparseFiles>'
>>
$SYNCTHING_CONFIG_FILE
echo
' </folder>'
>>
$SYNCTHING_CONFIG_FILE
echo
" <device id=
\"
$SYNCTHING_ID
\"
name=
\"
${
PROJECT_NAME
}
\"
compression=
\"
metadata
\"
introducer=
\"
false
\"
>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <address>dynamic</address>'
>>
$SYNCTHING_CONFIG_FILE
echo
' </device>'
>>
$SYNCTHING_CONFIG_FILE
echo
""
>
$TEMP_IDS_FILE
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
if
[
-f
/home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
]
;
then
while
read
-r
line
||
[[
-n
"
$line
"
]]
;
do
if
[[
$line
!=
*
"#"
*
&&
$line
!=
*
"*"
*
&&
$line
!=
*
'/'
*
&&
$line
==
*
"-"
*
]]
;
then
if
[
${#
line
}
-gt
10
]
;
then
if
!
grep
-q
"
$line
"
$TEMP_IDS_FILE
;
then
echo
" <device id=
\"
$line
\"
name=
\"
${
USERNAME
}
\"
compression=
\"
metadata
\"
introducer=
\"
false
\"
>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <address>dynamic</address>'
>>
$SYNCTHING_CONFIG_FILE
echo
' </device>'
>>
$SYNCTHING_CONFIG_FILE
echo
"
$line
"
>>
$TEMP_IDS_FILE
fi
fi
fi
done
< /home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
fi
fi
done
rm
$TEMP_IDS_FILE
echo
' <options>'
>>
$SYNCTHING_CONFIG_FILE
echo
" <listenAddress>tcp://0.0.0.0:
$SYNCTHING_PORT
</listenAddress>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <globalAnnounceServer>default</globalAnnounceServer>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <globalAnnounceEnabled>true</globalAnnounceEnabled>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <localAnnounceEnabled>true</localAnnounceEnabled>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <localAnnouncePort>21027</localAnnouncePort>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <localAnnounceMCAddr>[ff12::8384]:21027</localAnnounceMCAddr>'
>>
$SYNCTHING_CONFIG_FILE
echo
" <relayServer>dynamic+
$SYNCTHING_RELAY_SERVER
</relayServer>"
>>
$SYNCTHING_CONFIG_FILE
echo
' <maxSendKbps>0</maxSendKbps>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <maxRecvKbps>0</maxRecvKbps>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <reconnectionIntervalS>60</reconnectionIntervalS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <relaysEnabled>true</relaysEnabled>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <relayReconnectIntervalM>10</relayReconnectIntervalM>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <startBrowser>true</startBrowser>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <upnpEnabled>true</upnpEnabled>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <upnpLeaseMinutes>60</upnpLeaseMinutes>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <upnpRenewalMinutes>30</upnpRenewalMinutes>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <upnpTimeoutSeconds>10</upnpTimeoutSeconds>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <urAccepted>-1</urAccepted>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <urUniqueID></urUniqueID>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <urURL>https://data.syncthing.net/newdata</urURL>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <urPostInsecurely>false</urPostInsecurely>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <urInitialDelayS>1800</urInitialDelayS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <restartOnWakeup>true</restartOnWakeup>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <autoUpgradeIntervalH>12</autoUpgradeIntervalH>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <keepTemporariesH>24</keepTemporariesH>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <cacheIgnoredFiles>true</cacheIgnoredFiles>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <progressUpdateIntervalS>5</progressUpdateIntervalS>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <symlinksEnabled>true</symlinksEnabled>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <limitBandwidthInLan>false</limitBandwidthInLan>'
>>
$SYNCTHING_CONFIG_FILE
echo
' <minHomeDiskFreePct>1</minHomeDiskFreePct>'
>>
$SYNCTHING_CONFIG_FILE
echo
" <releasesURL>
$SYNCTHING_RELEASES
</releasesURL>"
>>
$SYNCTHING_CONFIG_FILE
echo
' </options>'
>>
$SYNCTHING_CONFIG_FILE
echo
'</configuration>'
>>
$SYNCTHING_CONFIG_FILE
# give each user account a file containing the device id for this server
# This allows it to appear within the user control panel
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
echo
"
$SYNCTHING_ID
"
>
/home/
$USERNAME
/.syncthing-server-id
chown
$USERNAME
:
$USERNAME
/home/
$USERNAME
/.syncthing-server-id
fi
done
}
function
user_devices_changed
{
CHANGED
=
if
[
!
-f
$SYNCTHING_CONFIG_FILE
]
;
then
CHANGED
=
1
return
fi
for
d
in
/home/
*
/
;
do
USERNAME
=
$(
echo
"
$d
"
|
awk
-F
'/'
'{print $3}'
)
if
[[
$USERNAME
!=
"git"
&&
$USERNAME
!=
"mirrors"
&&
$USERNAME
!=
"sync"
]]
;
then
if
[
-f
/home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
]
;
then
while
read
-r
line
||
[[
-n
"
$line
"
]]
;
do
if
[[
$line
!=
*
"#"
*
&&
$line
!=
*
"*"
*
&&
$line
!=
*
'/'
*
&&
$line
==
*
"-"
*
]]
;
then
if
[
${#
line
}
-gt
10
]
;
then
if
!
grep
-q
"
$line
"
$SYNCTHING_CONFIG_FILE
;
then
CHANGED
=
1
fi
fi
fi
done
< /home/
$USERNAME
/
$SYNCTHING_USER_IDS_FILE
fi
fi
done
}
user_devices_changed
if
[
$CHANGED
]
;
then
create_syncthing_config
systemctl restart syncthing
fi
exit
0
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment