1
0
mirror of https://git.cloudron.io/cloudron/syncthing-app synced 2025-09-13 16:29:09 +00:00

Compare commits

..

36 Commits

Author SHA1 Message Date
Girish Ramakrishnan
4af07bb9b9 Version 0.3.0 2017-07-28 15:44:37 -07:00
Girish Ramakrishnan
303a00f082 Update to 0.14.33 2017-07-28 15:43:48 -07:00
Girish Ramakrishnan
c3533569c1 encode the password 2017-07-28 15:36:51 -07:00
Girish Ramakrishnan
06a75583e8 fix promise usage 2017-07-28 15:35:45 -07:00
Girish Ramakrishnan
b413b5d43a Merge branch 'update_to_0_14_32' into 'master'
Update to 0 14 32

See merge request !1
2017-07-20 16:55:43 +00:00
Girish Ramakrishnan
5377c0180c Version 0.2.5 2017-07-15 21:54:00 -05:00
Girish Ramakrishnan
f3a6e7b69e Update to 0.14.32 2017-07-15 21:53:29 -05:00
Dennis Schwerdel
7620eec7b6 Updated to new upstream version 2017-06-27 10:20:37 +02:00
Dennis Schwerdel
2d4e328955 Updated to new upstream version 2017-06-13 09:29:43 +02:00
Dennis Schwerdel
ef3a205467 Fixed tests 2017-06-13 09:29:14 +02:00
dswd
9400c1a99f Merge branch 'addsynctag' into 'master'
add sync tag

See merge request !2
2017-06-11 19:21:21 +00:00
gregory
ff751142d4 add sync tag 2017-06-11 00:30:44 -05:00
Dennis Schwerdel
2032c881a5 Fixed description 2017-06-10 12:07:25 +02:00
Dennis Schwerdel
692c124a61 Version 0.2.0 2017-06-10 11:48:10 +02:00
Dennis Schwerdel
70c159edbc Running under user cloudron 2017-06-10 11:47:54 +02:00
Dennis Schwerdel
d7a7febb91 Not creating a default share 2017-06-10 11:38:41 +02:00
Dennis Schwerdel
9fff5574cb Updated tests 2017-06-10 11:33:48 +02:00
Dennis Schwerdel
cfc7133606 Fixed possible race condition 2017-06-10 11:25:07 +02:00
dswd
ef92705074 Merge branch 'master' into 'master'
Uses Syncthing Generated Request

Closes #2

See merge request !1
2017-06-10 09:22:25 +00:00
Shane Perry
baf46b3f52 Bumps package version to 0.1.4 2017-06-07 17:31:36 -05:00
Shane Perry
3d8ea24781 Adds back some config settings in order to confirm they are set on each startup 2017-06-07 17:26:33 -05:00
Dennis Schwerdel
37558f3b10 Updated postinstall message 2017-06-07 13:26:54 +02:00
Dennis Schwerdel
0e8b61d7d4 Only usernames work, not emails 2017-06-07 13:24:43 +02:00
Shane Perry
e628a70b60 Bumps syncthing version to 0.14.29 2017-06-06 07:51:20 -05:00
Shane Perry
02e9dbdedc Bumps CloudronManifest.json to version 0.1.3 2017-06-06 07:17:23 -05:00
Shane Perry
3e83a29587 Updates Changelog to 0.1.3 2017-06-06 07:15:41 -05:00
Shane Perry
bbe4721c76 Merges master with pull request branch 2017-06-06 07:11:52 -05:00
Dennis Schwerdel
37b6969e24 Fixed wrong URL 2017-06-06 10:22:12 +02:00
Shane Perry
92ae28d0da Dockerfile no longer adds the hardcoded config.xml 2017-05-25 21:32:49 -05:00
Shane Perry
5e085fc42a Bumps package version to 0.1.2 2017-05-25 21:30:48 -05:00
Shane Perry
d1c449aef8 Removes now unused config.xml file 2017-05-25 21:28:12 -05:00
Shane Perry
831efb6f8c Fixes #2; Fixes broken link 2017-05-25 21:26:54 -05:00
Shane Perry
012db8bad1 Generates full syncthing config; removes warning about authentication at startup; Adds Default folder 2017-05-25 21:19:46 -05:00
Shane Perry
4e805ba62f Bumps version to 0.14.28 2017-05-25 21:15:12 -05:00
Dennis Schwerdel
13de61d86e Fixed tests 2017-05-23 21:45:05 +02:00
Dennis Schwerdel
b5aadcde74 Caching ldap auth and fixed tests 2017-05-23 15:08:50 +02:00
11 changed files with 86 additions and 76 deletions

View File

@@ -2,26 +2,35 @@
* Initial version * Initial version
[0.1.1] [0.1.1]
* Added screenshots * Huge speedup by caching ldap
[0.1.2]
* Fixed wrong URL
[0.1.3]
* Updated postinstall message
[0.2.0] [0.2.0]
* Updated to 2017-01-25T03-14-52Z * Upstream version 0.14.29
* Uses syncthing generated config (thanks to @rymnel)
* Fixed typo in manifest (thanks to @rymnel)
* Running under user cloudron
[0.2.1] [0.2.1]
* Updated to 2017-02-16T01-47-30Z * Fixed description
* This version fixes the settings bug
[0.2.2] [0.2.2]
* New base image 0.10.0 * Add to sync category in app store
[0.2.3] [0.2.3]
* Updated to 2017-03-16T21-50-32Z * Updated to version 0.14.30
[0.2.4] [0.2.4]
* Updated to 2017-04-25T01-27-49Z * Updated to version 0.14.31
[0.2.5] [0.2.5]
* Updated to 2017-04-29T00-40-27Z * Updated to version 0.14.32
[0.3.0]
* Updated to version 0.14.33
[0.2.6]
* Updated to 2017-05-05T01-14-51Z

View File

@@ -5,7 +5,7 @@
"description": "file://DESCRIPTION.md", "description": "file://DESCRIPTION.md",
"changelog": "file://CHANGELOG", "changelog": "file://CHANGELOG",
"tagline": "Decentralized file synchronization", "tagline": "Decentralized file synchronization",
"version": "0.1.0", "version": "0.3.0",
"healthCheckPath": "/check", "healthCheckPath": "/check",
"httpPort": 8000, "httpPort": 8000,
"addons": { "addons": {
@@ -21,11 +21,12 @@
} }
}, },
"manifestVersion": 1, "manifestVersion": 1,
"website": "http://www.synthing.net", "website": "https://syncthing.net",
"contactEmail": "support@cloudron.io", "contactEmail": "support@cloudron.io",
"icon": "logo.png", "icon": "logo.png",
"tags": [ "tags": [
"storage" "storage",
"sync"
], ],
"mediaLinks": [ "mediaLinks": [
"https://git.cloudron.io/dswd/syncthing-app/raw/master/screenshots/1.jpg" "https://git.cloudron.io/dswd/syncthing-app/raw/master/screenshots/1.jpg"

View File

@@ -1,4 +1,4 @@
This app packages Syncthing v0.14.27. This app packages Syncthing <upstream>v0.14.33</upstream>.
Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet. Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

View File

@@ -28,7 +28,7 @@ RUN ./configure \
--build=cloudron-river --build=cloudron-river
RUN make install RUN make install
ENV VERSION 0.14.27 ENV VERSION 0.14.33
RUN mkdir -p /app/code \ RUN mkdir -p /app/code \
&& wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - \ && wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - \
@@ -37,7 +37,6 @@ RUN mkdir -p /app/code \
WORKDIR /app/code WORKDIR /app/code
ADD nginx.conf /app/code/nginx.conf ADD nginx.conf /app/code/nginx.conf
ADD config.xml /app/code/config.xml.default
ADD inittab /etc/inittab ADD inittab /etc/inittab
ADD start.sh /app/code/start.sh ADD start.sh /app/code/start.sh

View File

@@ -1,5 +1,6 @@
This application integrates with Cloudron authentication. This application integrates with Cloudron authentication.
However, all Cloudron users share the same Syncthing session. However, all Cloudron users share the same Syncthing session.
Please note that only the username is accepted as login and not the email address.
Syncthing contains an internal user `admin` that is needed by Cloudron but not exposed. Syncthing contains an internal user `admin` that is needed by Cloudron but not exposed.
Please do not change the password of that account. Please do not change the password of that account.

View File

@@ -31,7 +31,6 @@ The e2e tests are located in the `test/` folder and require [nodejs](http://node
cd syncthing-app/test cd syncthing-app/test
npm install npm install
export PATH=$PATH:node_modules/.bin PATH=$PATH:node_modules/.bin USERNAME=user PASSWORD=password mocha --bail test.js
USERNAME=user PASSWORD=password mocha --bail test.js
``` ```

View File

@@ -1,15 +0,0 @@
<configuration version="19">
<gui enabled="true" tls="false" debugging="false">
<insecureAdminAccess>true</insecureAdminAccess>
<address>0.0.0.0:3000</address>
<theme>default</theme>
</gui>
<options>
<listenAddress>tcp://:22000</listenAddress>
<localAnnounceEnabled>false</localAnnounceEnabled>
<startBrowser>false</startBrowser>
<natEnabled>true</natEnabled>
<autoUpgradeIntervalH>0</autoUpgradeIntervalH>
<upgradeToPreReleases>false</upgradeToPreReleases>
</options>
</configuration>

View File

@@ -1,2 +1,2 @@
::respawn:/app/code/syncthing -gui-address=0.0.0.0:3000 -home=/app/data/config -no-browser >/dev/stdout 2>/dev/stderr ::respawn:sudo -nu cloudron /app/code/syncthing -gui-address=0.0.0.0:3000 -home=/app/data/config -no-browser >/dev/stdout 2>/dev/stderr
::respawn:/usr/local/nginx/sbin/nginx -c /app/code/nginx.conf ::respawn:/usr/local/nginx/sbin/nginx -c /app/code/nginx.conf

View File

@@ -28,6 +28,9 @@ http {
proxy_buffering off; proxy_buffering off;
proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off; proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off;
proxy_cache my_cache; proxy_cache my_cache;
auth_ldap_cache_enabled on;
auth_ldap_cache_expiration_time 300000;
auth_ldap_cache_size 100;
server { server {
error_log /dev/stderr warn; error_log /dev/stderr warn;

View File

@@ -4,8 +4,12 @@ set -eu
mkdir -p /app/data/config mkdir -p /app/data/config
if ! [ -f /app/data/config/config.xml ]; then export STNODEFAULTFOLDER=1 STNOUPGRADE=1
cp /app/code/config.xml.default /app/data/config/config.xml
# if this if the first run, generate a useful config
if [ ! -f /app/data/config/config.xml ]; then
echo "=> Generating config"
/app/code/syncthing --generate="/app/data/config"
fi fi
cat >/run/ldap.conf <<EOF cat >/run/ldap.conf <<EOF
@@ -19,9 +23,11 @@ ldap_server cloudron {
} }
EOF EOF
# Set the listenAddress and the gui enabled to make sure user doesnt lock themselves out by accident.
sed -e 's,<listenAddress>.*</listenAddress>,<listenAddress>tcp://:22000</listenAddress>,' -i /app/data/config/config.xml sed -e 's,<listenAddress>.*</listenAddress>,<listenAddress>tcp://:22000</listenAddress>,' -i /app/data/config/config.xml
sed -e 's,<gui .*>,<gui enabled="true" tls="false" debugging="false">,' -i /app/data/config/config.xml sed -e 's,<gui .*>,<gui enabled="true" tls="false" debugging="false">,' -i /app/data/config/config.xml
export STNODEFAULTFOLDER=1 STNOUPGRADE=1 chown -R cloudron:cloudron /app/data/config /app/data
exec busybox init exec busybox init

View File

@@ -46,64 +46,71 @@ describe('Application life cycle test', function () {
done(); done();
}); });
var LOCATION = 'syncthing-test'; var LOCATION = 'test';
var TEST_TIMEOUT = 30000; var TEST_TIMEOUT = 30000;
var SYNC_PORT = 22001; var SYNC_PORT = 22001;
var app; var app;
function pageLoaded(callback) { function pageLoaded() {
browser.wait(until.titleMatches(/[0-9a-f]{12} \| Syncthing/), TEST_TIMEOUT).then(callback); return browser.wait(until.titleMatches(/[0-9a-f]{12} \| Syncthing/), TEST_TIMEOUT);
} }
function visible(selector, callback) { function visible(selector) {
return browser.wait(until.elementLocated(selector), TEST_TIMEOUT).then(function () { return browser.wait(until.elementLocated(selector), TEST_TIMEOUT).then(function () {
browser.wait(until.elementIsVisible(browser.findElement(selector)), TEST_TIMEOUT).then(function () { return browser.wait(until.elementIsVisible(browser.findElement(selector)), TEST_TIMEOUT);
callback();
});
}); });
} }
function loadPage(callback) { function loadPage(callback) {
browser.manage().deleteAllCookies(); browser.manage().deleteAllCookies().then(function () {
browser.get('https://' + username + ':' + password + '@' + app.fqdn); return browser.get('https://' + username + ':' + encodeURIComponent(password) + '@' + app.fqdn);
pageLoaded(function() { }).then(function () {
return pageLoaded();
}).then(function () {
callback(); callback();
}); });
} }
function addFolder(callback) { function addFolder(callback) {
pageLoaded(function() { pageLoaded().then(function() {
browser.findElement(by.css('[ng-click*=addFolder]')).click(); return browser.findElement(by.css('[ng-click*=addFolder]')).click();
visible(by.id('folderPath'), function() { }).then(function () {
browser.findElement(by.id('folderLabel')).sendKeys('test').then(function() { return visible(by.id('folderPath'));
browser.findElement(by.id('folderPath')).sendKeys('/app/data/test').then(function() { }).then(function() {
//Clear and re-enter the folder to avoid race with auto-completion return browser.findElement(by.id('folderLabel')).sendKeys('test');
browser.findElement(by.id('folderPath')).clear().then(function() { }).then(function () {
browser.findElement(by.id('folderPath')).sendKeys('/app/data/test').then(function() { return browser.findElement(by.id('folderPath')).sendKeys('/app/data/test');
browser.findElement(by.css('[ng-click*=saveFolder]')).click().then(function() { }).then(function() {
browser.wait(until.elementLocated(by.css('#folders .panel-status span[ng-switch-when=unshared]')), TEST_TIMEOUT).then(function() { //Clear and re-enter the folder to avoid race with auto-completion
callback(); return browser.findElement(by.id('folderPath')).clear();
}); }).then(function() {
}); return browser.findElement(by.id('folderPath')).sendKeys('/app/data/test');
}); }).then(function() {
}); return browser.findElement(by.css('[ng-click*=saveFolder]')).click();
}); }).then(function() {
}); return browser.wait(until.elementLocated(by.css('#folders .panel-status span[ng-switch-when=unshared]')), TEST_TIMEOUT);
}); }).then(function() {
callback();
}); });
} }
function removeFolder(callback) { function removeFolder(callback) {
pageLoaded(function() { browser.get('https://' + username + ':' + encodeURIComponent(password) + '@' + app.fqdn).then(function () {
browser.findElement(by.css('#folders button')).click(); return pageLoaded();
setTimeout(function() { }).then(function() {
browser.findElement(by.css('#folder-0 button[ng-click*=editFolder]')).click(); return browser.findElement(by.css('#folders button')).click();
setTimeout(function() { }).then(function () {
browser.findElement(by.css('[ng-click*=deleteFolder]')).click().then(function() { return browser.sleep(1000); //No way to check for visibility of angular-js components
setTimeout(callback, 500); //This needs to run for some time }).then(function () {
}); return browser.findElement(by.css('#folder-0 button[ng-click*=editFolder]')).click();
}, 500); //No way to check for visibility of angular-js components }).then(function () {
}, 500); //No way to check for visibility of angular-js components return browser.sleep(1000); //No way to check for visibility of angular-js components
}).then(function () {
return browser.findElement(by.css('[ng-click*=deleteFolder]')).click();
}).then(function () {
return browser.sleep(1000); //This needs to run for some time
}).then(function () {
callback();
}); });
} }
@@ -141,7 +148,7 @@ describe('Application life cycle test', function () {
it('move to different location', function () { it('move to different location', function () {
browser.manage().deleteAllCookies(); browser.manage().deleteAllCookies();
execSync('cloudron configure --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); execSync('cloudron configure --wait --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
var inspect = JSON.parse(execSync('cloudron inspect')); var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0]; app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0];
expect(app).to.be.an('object'); expect(app).to.be.an('object');