diff --git a/server/models/fields.js b/server/models/fields.js
index 28f034bc..1fef2b09 100644
--- a/server/models/fields.js
+++ b/server/models/fields.js
@@ -550,6 +550,9 @@ async function create(context, listId, entity) {
table.index(columnName);
}
});
+
+ // Altough this is a reference to another list, it is represented as signed int(11). This is because we use negative values for constant from SubscriptionSource
+ await knex.schema.raw('ALTER TABLE `subscription__' + listId + '` ADD `source_' + columnName +'` int(11) DEFAULT NULL');
}
return id;
diff --git a/server/setup/knex/migrations/20170506102634_v1_to_v2.js b/server/setup/knex/migrations/20170506102634_v1_to_v2.js
index eade6768..73d20291 100644
--- a/server/setup/knex/migrations/20170506102634_v1_to_v2.js
+++ b/server/setup/knex/migrations/20170506102634_v1_to_v2.js
@@ -250,6 +250,7 @@ async function migrateSubscriptions(knex) {
const info = await knex('subscription__' + list.id).columnInfo();
for (const field of fields) {
if (field.column != null) {
+ // Altough this is a reference to another list, it is represented as signed int(11). This is because we use negative values for constant from SubscriptionSource
await knex.schema.raw('ALTER TABLE `subscription__' + list.id + '` ADD `source_' + field.column +'` int(11) DEFAULT NULL');
}
@@ -1007,7 +1008,7 @@ async function migrateCampaigns(knex) {
' `ip` varchar(100) CHARACTER SET ascii DEFAULT NULL,\n' +
' `device_type` varchar(50) DEFAULT NULL,\n' +
' `country` varchar(2) CHARACTER SET ascii DEFAULT NULL,\n' +
- ' `count` int(11) unsigned NOT NULL DEFAULT \'1\',\n' +
+ ' `count` int(10) unsigned NOT NULL DEFAULT \'1\',\n' +
' `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n' +
' PRIMARY KEY (`campaign`, `list`,`subscription`,`link`),\n' +
' KEY `created_index` (`created`)\n' +
@@ -1174,8 +1175,8 @@ async function migrateTriggers(knex) {
await knex.schema.raw('CREATE TABLE `trigger_messages` (\n' +
' `trigger` int(10) unsigned NOT NULL,\n' +
- ' `list` int(11) unsigned NOT NULL,\n' +
- ' `subscription` int(11) unsigned NOT NULL,\n' +
+ ' `list` int(10) unsigned NOT NULL,\n' +
+ ' `subscription` int(10) unsigned NOT NULL,\n' +
' `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n' +
' PRIMARY KEY (`trigger`, `list`,`subscription`)\n' +
') ENGINE=InnoDB DEFAULT CHARSET=utf8;\n');
diff --git a/server/setup/mailtrain-apache-sample.conf b/server/setup/mailtrain-apache-sample.conf
new file mode 100644
index 00000000..4cad7448
--- /dev/null
+++ b/server/setup/mailtrain-apache-sample.conf
@@ -0,0 +1,101 @@
+# This example sets up virtual domains for mailtrain protected by HTTPS (including redirect from http to https)
+# Note that you will need mod_proxy and mod_ssl modules installed and enabled
+
+# This setup assumes three DNS names:
+# - mail.example.org - public endpoint used for subscriptions, campaign images, etc.
+# - mailtrain.example.org - UI for administration and send out emails
+# - sbox.mailtrain.example.org - sandbox for templates (to prevent potential XSS attacks in templates)
+
+# It is OK to point all the three DNS entries to the same IP address
+
+# You will need to customize this for your setup. In the least, this means:
+# - replace "example.org" with your domain
+# - point to your certificate (look for /etc/letsencrypt/live/mail.example.org in the config below)
+
+
+ ServerName mail.example.org
+
+ ServerSignature Off
+
+ RewriteEngine On
+ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
+
+ ErrorLog logs/mail.example.org_redirect_error.log
+ LogLevel warn
+
+
+
+ ServerName mailtrain.example.org
+
+ ServerSignature Off
+
+ RewriteEngine On
+ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
+
+ ErrorLog logs/mailtrain.example.org_redirect_error.log
+ LogLevel warn
+
+
+
+ ServerName sbox.mailtrain.example.org
+
+ ServerSignature Off
+
+ RewriteEngine On
+ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
+
+ ErrorLog logs/sbox.mailtrain.example.org_redirect_error.log
+ LogLevel warn
+
+
+
+ ServerName mail.example.org:443
+
+ ErrorLog logs/mail.example.org_ssl_error.log
+ TransferLog logs/mail.example.org_ssl_access.log
+ LogLevel warn
+
+ SSLEngine on
+ SSLCertificateFile /etc/letsencrypt/live/mail.example.org/cert.pem
+ SSLCertificateKeyFile /etc/letsencrypt/live/mail.example.org/privkey.pem
+ SSLCertificateChainFile /etc/letsencrypt/live/mail.example.org/chain.pem
+
+ ProxyPreserveHost On
+ ProxyPass "/" "http://127.0.0.1:3004/"
+ ProxyPassReverse "/" "http://127.0.0.1:3004/"
+
+
+
+ ServerName mailtrain.example.org:443
+
+ ErrorLog logs/mailtrain.example.org_ssl_error.log
+ TransferLog logs/mailtrain.example.org_ssl_access.log
+ LogLevel warn
+
+ SSLEngine on
+ SSLCertificateFile /etc/letsencrypt/live/mail.example.org/cert.pem
+ SSLCertificateKeyFile /etc/letsencrypt/live/mail.example.org/privkey.pem
+ SSLCertificateChainFile /etc/letsencrypt/live/mail.example.org/chain.pem
+
+ ProxyPreserveHost On
+ ProxyPass "/" "http://127.0.0.1:3000/"
+ ProxyPassReverse "/" "http://127.0.0.1:3000/"
+
+
+
+ ServerName sbox.mailtrain.example.org:443
+
+ ErrorLog logs/sbox.mailtrain.example.org_ssl_error.log
+ TransferLog logs/sbox.mailtrain.example.org_ssl_access.log
+ LogLevel warn
+
+ SSLEngine on
+ SSLCertificateFile /etc/letsencrypt/live/mail.example.org/cert.pem
+ SSLCertificateKeyFile /etc/letsencrypt/live/mail.example.org/privkey.pem
+ SSLCertificateChainFile /etc/letsencrypt/live/mail.example.org/chain.pem
+
+ ProxyPreserveHost On
+ ProxyPass "/" "http://127.0.0.1:3003/"
+ ProxyPassReverse "/" "http://127.0.0.1:3003/"
+
+
diff --git a/server/setup/mailtrain-apache.conf b/server/setup/mailtrain-apache.conf
deleted file mode 100644
index 8f0e9146..00000000
--- a/server/setup/mailtrain-apache.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# This example sets up mailtrain.org/www.mailtrain.org virtual domains
-# for Apache2 and proxies requests for these domains to localhost port 3000
-
-# Using mod_proxy is not enabled by default, so you probably need to do this yourself
-
-
- ProxyPreserveHost On
- ProxyPass "/" "http://127.0.0.1:3000/"
- ProxyPassReverse "/" "http://127.0.0.1:3000/"
- ServerName mailtrain.org
- ServerAlias www.mailtrain.org
-