summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md37
-rw-r--r--Dockerfile2
-rw-r--r--Stackerfile.yml2
-rw-r--r--client/components/cards/cardDetails.jade4
-rwxr-xr-xclient/components/main/editor.js13
-rw-r--r--client/components/main/header.styl2
-rw-r--r--client/components/main/layouts.jade1
-rw-r--r--client/components/main/layouts.js109
-rw-r--r--client/components/main/layouts.styl4
-rw-r--r--client/components/settings/connectionMethod.jade6
-rw-r--r--client/components/settings/connectionMethod.js34
-rw-r--r--docker-compose.yml31
-rw-r--r--i18n/cs.i18n.json14
-rw-r--r--i18n/fa.i18n.json4
-rw-r--r--i18n/he.i18n.json10
-rw-r--r--nginx/nginx.conf92
-rw-r--r--nginx/ssl/.gitkeep1
-rw-r--r--package.json2
-rwxr-xr-xrebuild-wekan.sh37
-rwxr-xr-xreleases/virtualbox/rebuild-wekan.sh30
-rw-r--r--sandstorm-pkgdef.capnp7
-rw-r--r--snapcraft.yaml4
-rwxr-xr-xstacksmith/user-scripts/build.sh7
23 files changed, 288 insertions, 165 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 169efdf7..e59520e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,44 @@
-# Upcoming Wekan release
+# v1.98 2019-01-01 Wekan release
This release adds the following new features:
-- [Combine all docker-compose.yml files](https://github.com/wekan/wekan/commit/3f948ba49ba7266c436ff138716bdcae9e879903). Thanks to xet7.
+- Add optional Nginx reverse proxy config to docker-compose.yml and nginx directory. Thanks to MyTheValentinus.
+and fixes the following bugs:
+
+- docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet. Thanks to xet7.
+- [Mobile fixes](https://github.com/wekan/wekan/pull/2084), thanks to hupptechnologies:
+ - Move home button / avatar bar from bottom to top. So at top first is home button / avatar, then others.
+ - When clicking Move Card, go to correct page position. Currently it's at empty page position, and there is
+ need to scroll page up to see Move Card options. It should work similarly like Copy Card, that is visible.
+ - Also check that other buttons go to visible page.
+
Thanks to above GitHub users for their contributions.
+# v1.97 2018-12-26 Wekan release
+
+This release adds the following new features:
+
+- Upgrade to Node 8.15.0 and MongoDB 3.2.22.
+- Stacksmith: back to Meteor 1.6.x based Wekan, because Meteor 1.8.x based is currently broken.
+
+Thanks to GitHub user xet7 for contributions.
+
+# v1.96 2018-12-24 Wekan release
+
+This release adds the following new features:
+
+- [Combine all docker-compose.yml files](https://github.com/wekan/wekan/commit/3f948ba49ba7266c436ff138716bdcae9e879903).
+
+and tries to fix following bugs:
+
+- Revert "Improve authentication" and "Default Authentication Method"
+ to make login work again.
+- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
+ Most likely Meteor 1.8.x version is still broken.
+
+Thanks to GitHub user xet7 for contributions.
+
# v1.95 2018-12-21 Wekan release
This release adds the following new features:
diff --git a/Dockerfile b/Dockerfile
index 896012f9..0a7479b4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -76,7 +76,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7" \
- NODE_VERSION=v8.14.1 \
+ NODE_VERSION=v8.15.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
diff --git a/Stackerfile.yml b/Stackerfile.yml
index 944d6c0c..fcaa3e0c 100644
--- a/Stackerfile.yml
+++ b/Stackerfile.yml
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v1.95.0"
+appVersion: "v1.98.0"
files:
userUploads:
- README.md
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index daeab7d3..a6dc3dde 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -264,7 +264,7 @@ template(name="copyChecklistToManyCardsPopup")
template(name="boardsAndLists")
label {{_ 'boards'}}:
- select.js-select-boards
+ select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
@@ -302,7 +302,7 @@ template(name="cardMorePopup")
span {{_ 'link-card'}}
= ' '
i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
- input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}")
+ input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
span.clearfix
br
diff --git a/client/components/main/editor.js b/client/components/main/editor.js
index 152f69e2..20ece562 100755
--- a/client/components/main/editor.js
+++ b/client/components/main/editor.js
@@ -9,12 +9,10 @@ Template.editor.onRendered(() => {
match: /\B@([\w.]*)$/,
search(term, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
- if (currentBoard) {
- callback(currentBoard.activeMembers().map((member) => {
- const username = Users.findOne(member.userId).username;
- return username.includes(term) ? username : null;
- }).filter(Boolean));
- }
+ callback(currentBoard.activeMembers().map((member) => {
+ const username = Users.findOne(member.userId).username;
+ return username.includes(term) ? username : null;
+ }).filter(Boolean));
},
template(value) {
return value;
@@ -39,9 +37,6 @@ const at = HTML.CharRef({html: '@', str: '@'});
Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
const view = this;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
- if (!currentBoard) {
- return HTML.Raw('');
- }
const knowedUsers = currentBoard.members.map((member) => {
const u = Users.findOne(member.userId);
if(u){
diff --git a/client/components/main/header.styl b/client/components/main/header.styl
index 495716e1..e3c7618d 100644
--- a/client/components/main/header.styl
+++ b/client/components/main/header.styl
@@ -188,8 +188,6 @@
width: 100%
padding: 10px 0px
z-index: 30
- position: absolute
- bottom: 0px
ul
width: calc(100% - 60px)
diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade
index 1c22fee6..55ee2686 100644
--- a/client/components/main/layouts.jade
+++ b/client/components/main/layouts.jade
@@ -23,6 +23,7 @@ template(name="userFormsLayout")
br
section.auth-dialog
+Template.dynamic(template=content)
+ +connectionMethod
if isCas
.at-form
button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js
index 89dcca2d..a50d167e 100644
--- a/client/components/main/layouts.js
+++ b/client/components/main/layouts.js
@@ -6,14 +6,29 @@ const i18nTagToT9n = (i18nTag) => {
return i18nTag;
};
-Template.userFormsLayout.onCreated(function() {
- Meteor.call('getDefaultAuthenticationMethod', (error, result) => {
- this.data.defaultAuthenticationMethod = new ReactiveVar(error ? undefined : result);
- });
+const validator = {
+ set(obj, prop, value) {
+ if (prop === 'state' && value !== 'signIn') {
+ $('.at-form-authentication').hide();
+ } else if (prop === 'state' && value === 'signIn') {
+ $('.at-form-authentication').show();
+ }
+ // The default behavior to store the value
+ obj[prop] = value;
+ // Indicate success
+ return true;
+ },
+};
+
+Template.userFormsLayout.onCreated(() => {
Meteor.subscribe('setting');
+
});
Template.userFormsLayout.onRendered(() => {
+
+ AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
+
const i18nTag = navigator.language;
if (i18nTag) {
T9n.setLanguage(i18nTagToT9n(i18nTag));
@@ -86,11 +101,13 @@ Template.userFormsLayout.events({
}
});
},
- 'click #at-btn'(event, instance) {
- const email = $('#at-field-username_and_email').val();
- const password = $('#at-field-password').val();
-
- if (FlowRouter.getRouteName() !== 'atSignIn' || password === '' || email === '') {
+ 'click #at-btn'(event) {
+ /* All authentication method can be managed/called here.
+ !! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !!
+ */
+ const authenticationMethodSelected = $('.select-authentication').val();
+ // Local account
+ if (authenticationMethodSelected === 'password') {
return;
}
@@ -98,11 +115,29 @@ Template.userFormsLayout.events({
event.preventDefault();
event.stopImmediatePropagation();
- Meteor.subscribe('user-authenticationMethod', email, {
- onReady() {
- return authentication.call(this, instance, email, password);
- },
- });
+ const email = $('#at-field-username_and_email').val();
+ const password = $('#at-field-password').val();
+
+ // Ldap account
+ if (authenticationMethodSelected === 'ldap') {
+ // Check if the user can use the ldap connection
+ Meteor.subscribe('user-authenticationMethod', email, {
+ onReady() {
+ const user = Users.findOne();
+ if (user === undefined || user.authenticationMethod === 'ldap') {
+ // Use the ldap connection package
+ Meteor.loginWithLDAP(email, password, function(error) {
+ if (!error) {
+ // Connection
+ return FlowRouter.go('/');
+ }
+ return error;
+ });
+ }
+ return this.stop();
+ },
+ });
+ }
},
});
@@ -111,49 +146,3 @@ Template.defaultLayout.events({
Modal.close();
},
});
-
-function authentication(instance, email, password) {
- const user = Users.findOne();
-
- // Authentication with password
- if (user && user.authenticationMethod === 'password') {
- $('#at-pwd-form').submit();
- return this.stop();
- }
-
- const authenticationMethod = user
- ? user.authenticationMethod
- : instance.data.defaultAuthenticationMethod.get();
-
- switch (authenticationMethod) {
- case 'ldap':
- // Use the ldap connection package
- Meteor.loginWithLDAP(email, password, function(error) {
- if (error) {
- displayError('error-ldap-login');
- return this.stop();
- } else {
- return FlowRouter.go('/');
- }
- });
- break;
-
- default:
- displayError('error-undefined');
- }
-
- return this.stop();
-}
-
-function displayError(code) {
- const translated = TAPi18n.__(code);
-
- if (translated === code) {
- return;
- }
-
- if(!$('.at-error').length) {
- $('.at-pwd-form').before('<div class="at-error"><p></p></div>');
- }
- $('.at-error p').text(translated);
-}
diff --git a/client/components/main/layouts.styl b/client/components/main/layouts.styl
index 3457a028..edbf759b 100644
--- a/client/components/main/layouts.styl
+++ b/client/components/main/layouts.styl
@@ -385,8 +385,8 @@ a
@media screen and (max-width: 800px)
#content
- margin: 1px 0px 49px 0px
- height: calc(100% - 96px)
+ margin: 1px 0px 0px 0px
+ height: calc(100% - 0px)
> .wrapper
margin-top: 0px
diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade
new file mode 100644
index 00000000..ac4c8c64
--- /dev/null
+++ b/client/components/settings/connectionMethod.jade
@@ -0,0 +1,6 @@
+template(name='connectionMethod')
+ div.at-form-authentication
+ label {{_ 'authentication-method'}}
+ select.select-authentication
+ each authentications
+ option(value="{{value}}") {{_ value}}
diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js
new file mode 100644
index 00000000..9fe8f382
--- /dev/null
+++ b/client/components/settings/connectionMethod.js
@@ -0,0 +1,34 @@
+Template.connectionMethod.onCreated(function() {
+ this.authenticationMethods = new ReactiveVar([]);
+
+ Meteor.call('getAuthenticationsEnabled', (_, result) => {
+ if (result) {
+ // TODO : add a management of different languages
+ // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
+ this.authenticationMethods.set([
+ {value: 'password'},
+ // Gets only the authentication methods availables
+ ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
+ ]);
+ }
+
+ // If only the default authentication available, hides the select boxe
+ const content = $('.at-form-authentication');
+ if (!(this.authenticationMethods.get().length > 1)) {
+ content.hide();
+ } else {
+ content.show();
+ }
+ });
+});
+
+Template.connectionMethod.onRendered(() => {
+ // Moves the select boxe in the first place of the at-pwd-form div
+ $('.at-form-authentication').detach().prependTo('.at-pwd-form');
+});
+
+Template.connectionMethod.helpers({
+ authentications() {
+ return Template.instance().authenticationMethods.get();
+ },
+});
diff --git a/docker-compose.yml b/docker-compose.yml
index 804a127f..abcaa48b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -90,11 +90,11 @@ services:
wekandb:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
- # a) For Wekan Meteor 1.8.x version at meteor-1.8 branch, use mongo 4.x
- image: mongo:4.0.4
+ # a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch, use mongo 4.x
+ # image: mongo:4.0.4
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
- # image: mongo:3.2.21
+ image: mongo:3.2.21
#-------------------------------------------------------------------------------------
container_name: wekan-db
restart: always
@@ -110,12 +110,12 @@ services:
wekan:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
- # a) For Wekan Meteor 1.8.x version at meteor-1.8 branch,
+ # a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch,
# using https://quay.io/wekan/wekan automatic builds
- image: quay.io/wekan/wekan:meteor-1.8
+ # image: quay.io/wekan/wekan:meteor-1.8
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
- # image: quay.io/wekan/wekan
+ image: quay.io/wekan/wekan
# c) Using specific Meteor 1.6.x version tag:
# image: quay.io/wekan/wekan:v1.95
# c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan
@@ -128,6 +128,7 @@ services:
- wekan-tier
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
+ # ==== and use commands: docker-compose up -d --build
#build:
# context: .
# dockerfile: Dockerfile
@@ -144,6 +145,7 @@ services:
# Docker outsideport:insideport. Do not add anything extra here.
# For example, if you want to have wekan on port 3001,
# use 3001:8080 . Do not add any extra address etc here, that way it does not work.
+ # remove port mapping if you use nginx reverse proxy, port 8080 is already exposed to wekan-tier network
- 80:8080
environment:
- MONGO_URL=mongodb://wekandb:27017/wekan
@@ -491,6 +493,23 @@ services:
# ...COPY CONFIG FROM ABOVE TO HERE...
#---------------------------------------------------------------------------------
+# OPTIONAL NGINX CONFIG FOR REVERSE PROXY
+# nginx:
+# image: nginx
+# container_name: nginx
+# restart: always
+# networks:
+# - wekan-tier
+# depends_on:
+# - wekan
+# ports:
+# - 80:80
+# - 443:443
+# volumes:
+# - ./nginx/ssl:/etc/nginx/ssl/
+# - ./nginx/nginx.conf:/etc/nginx/nginx.conf
+
+
volumes:
wekan-db:
driver: local
diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json
index c3775d42..3f712447 100644
--- a/i18n/cs.i18n.json
+++ b/i18n/cs.i18n.json
@@ -546,14 +546,14 @@
"r-moved-from": "Přesunuto z",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
- "r-a-card": "a card",
+ "r-a-card": "karta",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "Název sloupce",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
- "r-is": "is",
+ "r-is": "je",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "Když zaškrtávací seznam je",
"r-when-the-checklist": "Když zaškrtávací seznam",
@@ -561,8 +561,8 @@
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "Když položka zaškrtávacího seznamu je",
"r-when-the-item": "Když položka zaškrtávacího seznamu",
- "r-checked": "Checked",
- "r-unchecked": "Unchecked",
+ "r-checked": "Zaškrtnuto",
+ "r-unchecked": "Odškrtnuto",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
@@ -573,11 +573,11 @@
"r-add": "Přidat",
"r-remove": "Odstranit",
"r-label": "label",
- "r-member": "member",
+ "r-member": "člen",
"r-remove-all": "Remove all members from the card",
"r-checklist": "zaškrtávací seznam",
- "r-check-all": "Check all",
- "r-uncheck-all": "Uncheck all",
+ "r-check-all": "Zaškrtnout vše",
+ "r-uncheck-all": "Odškrtnout vše",
"r-items-check": "položky zaškrtávacího seznamu",
"r-check": "Check",
"r-uncheck": "Uncheck",
diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json
index e72048d8..f46e9cfc 100644
--- a/i18n/fa.i18n.json
+++ b/i18n/fa.i18n.json
@@ -620,6 +620,6 @@
"hide-logo": "مخفی سازی نماد",
"add-custom-html-after-body-start": "افزودن کد های HTML بعد از <body> شروع",
"add-custom-html-before-body-end": "افزودن کد های HTML قبل از </body> پایان",
- "error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-undefined": "یک اشتباه رخ داده شده است",
+ "error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد"
} \ No newline at end of file
diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json
index e18f4c57..4f8493b1 100644
--- a/i18n/he.i18n.json
+++ b/i18n/he.i18n.json
@@ -283,13 +283,13 @@
"import-board": "ייבוא לוח",
"import-board-c": "יבוא לוח",
"import-board-title-trello": "ייבוא לוח מטרלו",
- "import-board-title-wekan": "Import board from previous export",
- "import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
+ "import-board-title-wekan": "ייבוא לוח מייצוא קודם",
+ "import-sandstorm-backup-warning": "עדיף לא למחוק נתונים שייובאו מייצוא מקורי או מ־Trello בטרם בדיקה האם הגרעין הזה נסגר ונפתח שוב או אם מתקבלת שגיאה על כך שהלוח לא נמצא, משמעות הדבר היא אבדן מידע.",
"import-sandstorm-warning": "הלוח שייובא ימחק את כל הנתונים הקיימים בלוח ויחליף אותם בלוח שייובא.",
"from-trello": "מ־Trello",
"from-wekan": "מייצוא קודם",
"import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.",
- "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+ "import-board-instruction-wekan": "בלוח שלך עליך לגשת אל ‚תפריט’, לאחר מכן ‚ייצוא לוח’ ואז להעתיק את הטקסט מהקובץ שהתקבל.",
"import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת ייבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
"import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן",
"import-map-members": "מיפוי חברים",
@@ -620,6 +620,6 @@
"hide-logo": "הסתרת לוגו",
"add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית בתחילת ה <body>.",
"add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה</body>.",
- "error-undefined": "Something went wrong",
- "error-ldap-login": "An error occurred while trying to login"
+ "error-undefined": "מהו השתבש",
+ "error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה"
} \ No newline at end of file
diff --git a/nginx/nginx.conf b/nginx/nginx.conf
new file mode 100644
index 00000000..9029a2b4
--- /dev/null
+++ b/nginx/nginx.conf
@@ -0,0 +1,92 @@
+user www-data;
+worker_processes 1;
+
+error_log /var/log/nginx/error.log warn;
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+
+ keepalive_timeout 65;
+
+ map $http_host $this_host {
+ "" $host;
+ default $http_host;
+ }
+
+ map $http_x_forwarded_proto $the_scheme {
+ default $http_x_forwarded_proto;
+ "" $scheme;
+ }
+
+ map $http_x_forwarded_host $the_host {
+ default $http_x_forwarded_host;
+ "" $this_host;
+ }
+
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ server {
+ listen 80;
+ listen 443 ssl;
+
+ if ($scheme = http) {
+ rewrite ^ https://$host$request_uri? permanent;
+ }
+
+
+ ssl_certificate /etc/nginx/ssl/server.crt;
+ ssl_certificate_key /etc/nginx/ssl/server.key;
+
+
+ ssl_protocols TLSv1.2;
+ ssl_prefer_server_ciphers on;
+ ssl_ciphers EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES;
+
+ ssl_session_cache shared:SSL:10m;
+ ssl_session_timeout 10m;
+
+ ssl_ecdh_curve sect571r1:secp521r1:brainpoolP512r1:secp384r1;
+ add_header Strict-Transport-Security "max-age=31536000; preload";
+
+ # Add headers to serve security related headers
+ add_header X-Content-Type-Options nosniff;
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Robots-Tag none;
+ add_header X-Download-Options noopen;
+ add_header X-Permitted-Cross-Domain-Policies none;
+
+ add_header Referrer-Policy "same-origin";
+
+ root /var/www/html;
+ client_max_body_size 10G; # 0=unlimited - set max upload size
+ fastcgi_buffers 64 4K;
+
+ gzip off;
+
+ location / {
+ proxy_pass http://wekan:8080;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+ proxy_set_header X-Forwarded-For $remote_addr;
+ }
+ }
+}
diff --git a/nginx/ssl/.gitkeep b/nginx/ssl/.gitkeep
new file mode 100644
index 00000000..1fe3dd24
--- /dev/null
+++ b/nginx/ssl/.gitkeep
@@ -0,0 +1 @@
+PLACE YOUR SSL Certificates in this folder
diff --git a/package.json b/package.json
index f753fb46..7266a458 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "v1.95.0",
+ "version": "v1.98.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh
index 37e46f29..1b2016d0 100755
--- a/rebuild-wekan.sh
+++ b/rebuild-wekan.sh
@@ -4,7 +4,9 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
echo " You can still use any other locale as your main locale."
-X64NODE="https://nodejs.org/dist/v8.14.1/node-v8.14.1-linux-x64.tar.gz"
+#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
+#NODE_VERSION=8.14.1
+#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
read -p "$*"
@@ -69,31 +71,9 @@ do
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
-
- if [ "$(grep -Ei 'buntu|mint' /etc/*release)" ]; then
- sudo apt install -y build-essential git curl wget
-# sudo apt -y install nodejs npm
-# npm_call -g install n
-# sudo n 8.14.1
- fi
-
-# if [ "$(grep -Ei 'debian' /etc/*release)" ]; then
-# sudo apt install -y build-essential git curl wget
-# echo "Debian, or Debian on Windows Subsystem for Linux"
-# curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
-# sudo apt install -y nodejs
-# fi
-
- # TODO: Add Sandstorm for version of Node.js install
- #MACHINE_TYPE=`uname -m`
- #if [ ${MACHINE_TYPE} == 'x86_64' ]; then
- # # 64-bit stuff here
- # wget ${X64NODE}
- # sudo tar -C /usr/local --strip-components 1 -xzf ${X64NODE}
- #elif [ ${MACHINE_TYPE} == '32bit' ]; then
- # echo "TODO: 32-bit Linux install here"
- # exit
- #fi
+ # Debian, Ubuntu, Mint
+ sudo apt-get install -y build-essential git curl wget
+ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
@@ -125,11 +105,6 @@ do
npm_call -g install fibers@2.0.0
# Install Meteor, if it's not yet installed
curl https://install.meteor.com | bash
-# mkdir ~/repos
-# cd ~/repos
-# git clone https://github.com/wekan/wekan.git
-# cd wekan
-# git checkout devel
break
;;
"Build Wekan")
diff --git a/releases/virtualbox/rebuild-wekan.sh b/releases/virtualbox/rebuild-wekan.sh
index a6135526..7501cee1 100755
--- a/releases/virtualbox/rebuild-wekan.sh
+++ b/releases/virtualbox/rebuild-wekan.sh
@@ -4,7 +4,7 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
echo " You can still use any other locale as your main locale."
-X64NODE="https://nodejs.org/dist/v8.14.1/node-v8.14.1-linux-x64.tar.gz"
+#X64NODE="https://nodejs.org/dist/v8.14.1/node-v8.14.1-linux-x64.tar.gz"
function pause(){
read -p "$*"
@@ -20,31 +20,9 @@ do
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
-
- if [ "$(grep -Ei 'buntu|mint' /etc/*release)" ]; then
- sudo apt install -y build-essential git curl wget
- sudo apt -y install nodejs npm
- sudo npm -g install n
- sudo n 8.14.1
- fi
-
- if [ "$(grep -Ei 'debian' /etc/*release)" ]; then
- sudo apt install -y build-essential git curl wget
- echo "Debian, or Debian on Windows Subsystem for Linux"
- curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
- sudo apt install -y nodejs
- fi
-
- # TODO: Add Sandstorm for version of Node.js install
- #MACHINE_TYPE=`uname -m`
- #if [ ${MACHINE_TYPE} == 'x86_64' ]; then
- # # 64-bit stuff here
- # wget ${X64NODE}
- # sudo tar -C /usr/local --strip-components 1 -xzf ${X64NODE}
- #elif [ ${MACHINE_TYPE} == '32bit' ]; then
- # echo "TODO: 32-bit Linux install here"
- # exit
- #fi
+ echo "Ubuntu, Mint, Debian, or Debian on Windows Subsystem for Linux";
+ sudo apt-get install -y build-essential git curl wget;
+ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -;
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 461b8b43..0dab07a9 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
- appVersion = 197,
+ appVersion = 200,
# Increment this for every release.
- appMarketingVersion = (defaultText = "1.95.0~2018-12-21"),
+ appMarketingVersion = (defaultText = "1.98.0~2019-01-01"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
@@ -254,7 +254,6 @@ const myCommand :Spk.Manifest.Command = (
(key = "OAUTH2_TOKEN_ENDPOINT", value=""),
(key = "LDAP_ENABLE", value="false"),
(key = "SANDSTORM", value = "1"),
- (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}"),
- (key = "DEFAULT_AUTHENTICATION_METHOD", value = "")
+ (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}")
]
);
diff --git a/snapcraft.yaml b/snapcraft.yaml
index 4831f150..d14d8037 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -65,7 +65,7 @@ apps:
parts:
mongodb:
- source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.21.tgz
+ source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.22.tgz
plugin: dump
stage-packages: [libssl1.0.0]
filesets:
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
- node-engine: 8.14.1
+ node-engine: 8.15.0
node-packages:
- node-gyp
- node-pre-gyp
diff --git a/stacksmith/user-scripts/build.sh b/stacksmith/user-scripts/build.sh
index f589bd82..10823ab1 100755
--- a/stacksmith/user-scripts/build.sh
+++ b/stacksmith/user-scripts/build.sh
@@ -2,7 +2,7 @@
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
-NODE_VERSION=v8.14.1
+NODE_VERSION=v8.15.0
#METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer
USE_EDGE=false
METEOR_EDGE=1.5-beta.17
@@ -19,9 +19,12 @@ sudo useradd --user-group --system --home-dir /home/wekan wekan
sudo mkdir -p /home/wekan
sudo chown wekan:wekan /home/wekan/
-# Using meteor-1.8 branch that has newer Meteor that is compatible with MongoDB 4.x
+# meteor-1.8 branch that has newer Meteor that is compatible with MongoDB 4.x
sudo -u wekan git clone -b meteor-1.8 https://github.com/wekan/wekan.git /home/wekan/app
+# OLD: Using Meteor 1.6.x version of Wekan
+#sudo -u wekan git clone https://github.com/wekan/wekan.git /home/wekan/app
+
sudo yum install -y ${BUILD_DEPS}
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.