-
- 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 .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If your software can interact with users remotely through a computer
-network, you should also make sure that it provides a way for users to
-get its source. For example, if your program is a web application, its
-interface could display a "Source" link that leads users to an archive
-of the code. There are many ways you could offer source, and different
-solutions will be better for different programs; see section 13 for the
-specific requirements.
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU AGPL, see
-.
\ No newline at end of file
+MIT License
+
+Copyright (c) 2022 RainLoopTeam
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 22871b0e8..bc1bc3eab 100644
--- a/Makefile
+++ b/Makefile
@@ -61,8 +61,6 @@ rl-watch-js:
rl-build:
@docker compose run --no-deps --rm node gulp all
-rl-build-pro:
- @docker compose run --no-deps --rm node gulp all --pro
yarn-install:
@docker compose run --no-deps --rm node yarn install
diff --git a/README.md b/README.md
index 9b4ec1fb2..c2956fbc2 100644
--- a/README.md
+++ b/README.md
@@ -22,8 +22,8 @@ Information about installing the product, check the [documentation page](http://
## License
-**RainLoop Webmail (Community edition)** is released under
-**GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL)**.
-http://www.gnu.org/licenses/agpl-3.0.html
+**RainLoop Webmail (Legacy edition)** is released under
+**MIT License**.
+https://choosealicense.com/licenses/mit/
-Copyright (c) 2019 Rainloop Team
+Copyright (c) 2022 Rainloop Team
diff --git a/dev/App/Admin.js b/dev/App/Admin.js
index 16e52eee2..0a6f4a215 100644
--- a/dev/App/Admin.js
+++ b/dev/App/Admin.js
@@ -4,9 +4,8 @@ import ko from 'ko';
import progressJs from 'progressJs';
import { root } from 'Common/Links';
-import { getNotification } from 'Common/Translator';
-import { StorageResultType, Notification } from 'Common/Enums';
-import { pInt, isNormal, isArray, inArray, isUnd } from 'Common/Utils';
+import { StorageResultType } from 'Common/Enums';
+import { pInt, isArray, isUnd } from 'Common/Utils';
import * as Settings from 'Storage/Settings';
@@ -14,7 +13,6 @@ import AppStore from 'Stores/Admin/App';
import CapaStore from 'Stores/Admin/Capa';
import DomainStore from 'Stores/Admin/Domain';
import PluginStore from 'Stores/Admin/Plugin';
-import LicenseStore from 'Stores/Admin/License';
import PackageStore from 'Stores/Admin/Package';
import CoreStore from 'Stores/Admin/Core';
import Remote from 'Remote/Admin/Ajax';
@@ -150,40 +148,6 @@ class AdminApp extends AbstractApp {
});
}
- /**
- * @param {boolean=} force = false
- */
- reloadLicensing(force = false) {
- LicenseStore.licensingProcess(true);
- LicenseStore.licenseError('');
- Remote.licensing((result, data) => {
- LicenseStore.licensingProcess(false);
- if (StorageResultType.Success === result && data && data.Result && isNormal(data.Result.Expired)) {
- LicenseStore.licenseValid(true);
- LicenseStore.licenseExpired(pInt(data.Result.Expired));
- LicenseStore.licenseError('');
- LicenseStore.licensing(true);
- AppStore.prem(true);
- } else {
- if (
- data &&
- data.ErrorCode &&
- -1 < inArray(pInt(data.ErrorCode), [Notification.LicensingServerIsUnavailable, Notification.LicensingExpired])
- ) {
- LicenseStore.licenseError(getNotification(pInt(data.ErrorCode)));
- LicenseStore.licensing(true);
- } else {
- if (StorageResultType.Abort === result) {
- LicenseStore.licenseError(getNotification(Notification.LicensingServerIsUnavailable));
- LicenseStore.licensing(true);
- } else {
- LicenseStore.licensing(false);
- }
- }
- }
- }, force);
- }
-
bootend(bootendCallback = null) {
if (progressJs) {
progressJs.end();
diff --git a/dev/Common/Globals.js b/dev/Common/Globals.js
index 18aa68187..709db0ac2 100644
--- a/dev/Common/Globals.js
+++ b/dev/Common/Globals.js
@@ -26,11 +26,6 @@ $hcont
export const startMicrotime = new window.Date().getTime();
-/**
- * @type {boolean}
- */
-export const community = RL_COMMUNITY;
-
/**
* @type {?}
*/
diff --git a/dev/Screen/Admin/Settings.js b/dev/Screen/Admin/Settings.js
index 4ee1489d2..b3a60588a 100644
--- a/dev/Screen/Admin/Settings.js
+++ b/dev/Screen/Admin/Settings.js
@@ -12,6 +12,7 @@ import { SocialAdminSettings } from 'Settings/Admin/Social';
import { PluginsAdminSettings } from 'Settings/Admin/Plugins';
import { PackagesAdminSettings } from 'Settings/Admin/Packages';
import { AboutAdminSettings } from 'Settings/Admin/About';
+import { BrandingAdminSettings } from 'Settings/Admin/Branding';
import { getApp } from 'Helper/Apps/Admin';
@@ -27,16 +28,6 @@ class SettingsAdminScreen extends AbstractSettingsScreen {
* @param {Function=} fCallback = null
*/
setupSettings(fCallback = null) {
- let branding = null,
- licensing = null;
-
- if (RL_COMMUNITY) {
- branding = require('Settings/Admin/Branding').default;
- } else {
- branding = require('Settings/Admin/Prem/Branding').default;
- licensing = require('Settings/Admin/Prem/Licensing').default;
- }
-
addSettingsViewModel(
GeneralAdminSettings,
'AdminSettingsGeneral',
@@ -49,9 +40,7 @@ class SettingsAdminScreen extends AbstractSettingsScreen {
addSettingsViewModel(LoginAdminSettings, 'AdminSettingsLogin', 'TABS_LABELS/LABEL_LOGIN_NAME', 'login');
- if (branding) {
- addSettingsViewModel(branding, 'AdminSettingsBranding', 'TABS_LABELS/LABEL_BRANDING_NAME', 'branding');
- }
+ addSettingsViewModel(BrandingAdminSettings, 'AdminSettingsBranding', 'TABS_LABELS/LABEL_BRANDING_NAME', 'branding');
addSettingsViewModel(ContactsAdminSettings, 'AdminSettingsContacts', 'TABS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
@@ -68,10 +57,6 @@ class SettingsAdminScreen extends AbstractSettingsScreen {
addSettingsViewModel(PackagesAdminSettings, 'AdminSettingsPackages', 'TABS_LABELS/LABEL_PACKAGES_NAME', 'packages');
- if (licensing) {
- addSettingsViewModel(licensing, 'AdminSettingsLicensing', 'TABS_LABELS/LABEL_LICENSING_NAME', 'licensing');
- }
-
addSettingsViewModel(AboutAdminSettings, 'AdminSettingsAbout', 'TABS_LABELS/LABEL_ABOUT_NAME', 'about');
runSettingsViewModelHooks(true);
diff --git a/dev/Settings/Admin/About.js b/dev/Settings/Admin/About.js
index f12fa3828..22268ab07 100644
--- a/dev/Settings/Admin/About.js
+++ b/dev/Settings/Admin/About.js
@@ -3,7 +3,6 @@ import ko from 'ko';
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
import { appSettingsGet, settingsGet } from 'Storage/Settings';
-import AppStore from 'Stores/Admin/App';
import CoreStore from 'Stores/Admin/Core';
import { getApp } from 'Helper/Apps/Admin';
@@ -27,8 +26,6 @@ class AboutAdminSettings {
this.coreRemoteRelease = CoreStore.coreRemoteRelease;
this.coreVersionCompare = CoreStore.coreVersionCompare;
- this.community = RL_COMMUNITY || AppStore.community();
-
this.coreRemoteVersionHtmlDesc = ko.computed(() => {
translatorTrigger();
return i18n('TAB_ABOUT/HTML_NEW_VERSION', { 'VERSION': this.coreRemoteVersion() });
@@ -59,13 +56,13 @@ class AboutAdminSettings {
}
onBuild() {
- if (this.access() && !this.community) {
+ if (this.access()) {
getApp().reloadCoreData();
}
}
updateCoreData() {
- if (!this.coreUpdating() && !this.community) {
+ if (!this.coreUpdating()) {
getApp().updateCoreData();
}
}
diff --git a/dev/Settings/Admin/Branding.js b/dev/Settings/Admin/Branding.js
index 54f8fe82f..c83cdde2a 100644
--- a/dev/Settings/Admin/Branding.js
+++ b/dev/Settings/Admin/Branding.js
@@ -6,14 +6,11 @@ import { settingsSaveHelperSimpleFunction, trim } from 'Common/Utils';
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
import Remote from 'Remote/Admin/Ajax';
-import AppStore from 'Stores/Admin/App';
import { settingsGet } from 'Storage/Settings';
class BrandingAdminSettings {
constructor() {
- this.capa = AppStore.prem;
-
this.title = ko.observable(settingsGet('Title')).idleTrigger();
this.loadingDesc = ko.observable(settingsGet('LoadingDescription')).idleTrigger();
this.faviconUrl = ko.observable(settingsGet('FaviconUrl')).idleTrigger();
@@ -36,8 +33,6 @@ class BrandingAdminSettings {
{ optValue: 'always', optText: i18n('TAB_BRANDING/OPTION_WELCOME_PAGE_DISPLAY_ALWAYS') }
];
});
-
- this.community = RL_COMMUNITY || AppStore.community();
}
onBuild() {
@@ -64,6 +59,86 @@ class BrandingAdminSettings {
});
});
}, Magics.Time50ms);
+
+ _.delay(() => {
+ const f1 = settingsSaveHelperSimpleFunction(this.loginLogo.trigger, this),
+ f2 = settingsSaveHelperSimpleFunction(this.loginDescription.trigger, this),
+ f3 = settingsSaveHelperSimpleFunction(this.loginCss.trigger, this),
+ f4 = settingsSaveHelperSimpleFunction(this.userLogo.trigger, this),
+ f5 = settingsSaveHelperSimpleFunction(this.userLogoTitle.trigger, this),
+ f6 = settingsSaveHelperSimpleFunction(this.loginBackground.trigger, this),
+ f7 = settingsSaveHelperSimpleFunction(this.userCss.trigger, this),
+ f8 = settingsSaveHelperSimpleFunction(this.welcomePageUrl.trigger, this),
+ f9 = settingsSaveHelperSimpleFunction(this.welcomePageDisplay.trigger, this),
+ f10 = settingsSaveHelperSimpleFunction(this.userLogoMessage.trigger, this),
+ f11 = settingsSaveHelperSimpleFunction(this.userIframeMessage.trigger, this);
+
+ this.loginLogo.subscribe((value) => {
+ Remote.saveAdminConfig(f1, {
+ 'LoginLogo': trim(value)
+ });
+ });
+
+ this.loginDescription.subscribe((value) => {
+ Remote.saveAdminConfig(f2, {
+ 'LoginDescription': trim(value)
+ });
+ });
+
+ this.loginCss.subscribe((value) => {
+ Remote.saveAdminConfig(f3, {
+ 'LoginCss': trim(value)
+ });
+ });
+
+ this.userLogo.subscribe((value) => {
+ Remote.saveAdminConfig(f4, {
+ 'UserLogo': trim(value)
+ });
+ });
+
+ this.userLogoTitle.subscribe((value) => {
+ Remote.saveAdminConfig(f5, {
+ 'UserLogoTitle': trim(value)
+ });
+ });
+
+ this.userLogoMessage.subscribe((value) => {
+ Remote.saveAdminConfig(f10, {
+ 'UserLogoMessage': trim(value)
+ });
+ });
+
+ this.userIframeMessage.subscribe((value) => {
+ Remote.saveAdminConfig(f11, {
+ 'UserIframeMessage': trim(value)
+ });
+ });
+
+ this.loginBackground.subscribe((value) => {
+ Remote.saveAdminConfig(f6, {
+ 'LoginBackground': trim(value)
+ });
+ });
+
+ this.userCss.subscribe((value) => {
+ Remote.saveAdminConfig(f7, {
+ 'UserCss': trim(value)
+ });
+ });
+
+ this.welcomePageUrl.subscribe((value) => {
+ Remote.saveAdminConfig(f8, {
+ 'WelcomePageUrl': trim(value)
+ });
+ });
+
+ this.welcomePageDisplay.subscribe((value) => {
+ Remote.saveAdminConfig(f9, {
+ 'WelcomePageDisplay': trim(value)
+ });
+ });
+ }, Magics.Time50ms);
}
}
diff --git a/dev/Settings/Admin/Plugins.js b/dev/Settings/Admin/Plugins.js
index 2729be672..74498e97b 100644
--- a/dev/Settings/Admin/Plugins.js
+++ b/dev/Settings/Admin/Plugins.js
@@ -8,7 +8,6 @@ import { boolToAjax } from 'Common/Utils';
import { settingsGet } from 'Storage/Settings';
import { showScreenPopup } from 'Knoin/Knoin';
-import AppStore from 'Stores/Admin/App';
import PluginStore from 'Stores/Admin/Plugin';
import Remote from 'Remote/Admin/Ajax';
@@ -22,8 +21,6 @@ class PluginsAdminSettings {
this.plugins = PluginStore.plugins;
this.pluginsError = PluginStore.plugins.error;
- this.community = RL_COMMUNITY || AppStore.community();
-
this.visibility = ko.computed(() => (PluginStore.plugins.loading() ? 'visible' : 'hidden'));
this.onPluginLoadRequest = _.bind(this.onPluginLoadRequest, this);
diff --git a/dev/Settings/Admin/Prem/Branding.js b/dev/Settings/Admin/Prem/Branding.js
deleted file mode 100644
index c245f85b4..000000000
--- a/dev/Settings/Admin/Prem/Branding.js
+++ /dev/null
@@ -1,97 +0,0 @@
-import _ from '_';
-import { settingsSaveHelperSimpleFunction, trim } from 'Common/Utils';
-import { Magics } from 'Common/Enums';
-
-import Remote from 'Remote/Admin/Ajax';
-
-import { BrandingAdminSettings } from 'Settings/Admin/Branding';
-
-class BrandingPremAdminSettings extends BrandingAdminSettings {
- onBuild(dom) {
- super.onBuild(dom);
-
- if (this.capa && this.capa() && !this.community) {
- _.delay(() => {
- const f1 = settingsSaveHelperSimpleFunction(this.loginLogo.trigger, this),
- f2 = settingsSaveHelperSimpleFunction(this.loginDescription.trigger, this),
- f3 = settingsSaveHelperSimpleFunction(this.loginCss.trigger, this),
- f4 = settingsSaveHelperSimpleFunction(this.userLogo.trigger, this),
- f5 = settingsSaveHelperSimpleFunction(this.userLogoTitle.trigger, this),
- f6 = settingsSaveHelperSimpleFunction(this.loginBackground.trigger, this),
- f7 = settingsSaveHelperSimpleFunction(this.userCss.trigger, this),
- f8 = settingsSaveHelperSimpleFunction(this.welcomePageUrl.trigger, this),
- f9 = settingsSaveHelperSimpleFunction(this.welcomePageDisplay.trigger, this),
- f10 = settingsSaveHelperSimpleFunction(this.userLogoMessage.trigger, this),
- f11 = settingsSaveHelperSimpleFunction(this.userIframeMessage.trigger, this);
-
- this.loginLogo.subscribe((value) => {
- Remote.saveAdminConfig(f1, {
- 'LoginLogo': trim(value)
- });
- });
-
- this.loginDescription.subscribe((value) => {
- Remote.saveAdminConfig(f2, {
- 'LoginDescription': trim(value)
- });
- });
-
- this.loginCss.subscribe((value) => {
- Remote.saveAdminConfig(f3, {
- 'LoginCss': trim(value)
- });
- });
-
- this.userLogo.subscribe((value) => {
- Remote.saveAdminConfig(f4, {
- 'UserLogo': trim(value)
- });
- });
-
- this.userLogoTitle.subscribe((value) => {
- Remote.saveAdminConfig(f5, {
- 'UserLogoTitle': trim(value)
- });
- });
-
- this.userLogoMessage.subscribe((value) => {
- Remote.saveAdminConfig(f10, {
- 'UserLogoMessage': trim(value)
- });
- });
-
- this.userIframeMessage.subscribe((value) => {
- Remote.saveAdminConfig(f11, {
- 'UserIframeMessage': trim(value)
- });
- });
-
- this.loginBackground.subscribe((value) => {
- Remote.saveAdminConfig(f6, {
- 'LoginBackground': trim(value)
- });
- });
-
- this.userCss.subscribe((value) => {
- Remote.saveAdminConfig(f7, {
- 'UserCss': trim(value)
- });
- });
-
- this.welcomePageUrl.subscribe((value) => {
- Remote.saveAdminConfig(f8, {
- 'WelcomePageUrl': trim(value)
- });
- });
-
- this.welcomePageDisplay.subscribe((value) => {
- Remote.saveAdminConfig(f9, {
- 'WelcomePageDisplay': trim(value)
- });
- });
- }, Magics.Time50ms);
- }
- }
-}
-
-export { BrandingPremAdminSettings, BrandingPremAdminSettings as default };
diff --git a/dev/Settings/Admin/Prem/Licensing.js b/dev/Settings/Admin/Prem/Licensing.js
deleted file mode 100644
index b1224baa6..000000000
--- a/dev/Settings/Admin/Prem/Licensing.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import ko from 'ko';
-import moment from 'moment';
-
-import { settingsGet } from 'Storage/Settings';
-import { showScreenPopup } from 'Knoin/Knoin';
-
-import LicenseStore from 'Stores/Admin/License';
-
-import { getApp } from 'Helper/Apps/Admin';
-
-class LicensingPremAdminSettings {
- constructor() {
- this.licensing = LicenseStore.licensing;
- this.licensingProcess = LicenseStore.licensingProcess;
- this.licenseValid = LicenseStore.licenseValid;
- this.licenseExpired = LicenseStore.licenseExpired;
- this.licenseError = LicenseStore.licenseError;
- this.licenseTrigger = LicenseStore.licenseTrigger;
-
- this.adminDomain = ko.observable('');
- this.subscriptionEnabled = ko.observable(!!settingsGet('SubscriptionEnabled'));
-
- this.licenseTrigger.subscribe(() => {
- if (this.subscriptionEnabled()) {
- getApp().reloadLicensing(true);
- }
- });
- }
-
- onBuild() {
- if (this.subscriptionEnabled()) {
- getApp().reloadLicensing(false);
- }
- }
-
- onShow() {
- this.adminDomain(settingsGet('AdminDomain'));
- }
-
- showActivationForm() {
- showScreenPopup(require('View/Popup/Activate'));
- }
-
- showTrialForm() {
- showScreenPopup(require('View/Popup/Activate'), [true]);
- }
-
- /**
- * @returns {boolean}
- */
- licenseIsUnlim() {
- return 1898625600 === this.licenseExpired() || 1898625700 === this.licenseExpired(); // eslint-disable-line no-magic-numbers
- }
-
- /**
- * @returns {string}
- */
- licenseExpiredMomentValue() {
- const time = this.licenseExpired(),
- momentUnix = moment.unix(time);
-
- return this.licenseIsUnlim() ? 'Never' : time && momentUnix.format('LL') + ' (' + momentUnix.from(moment()) + ')';
- }
-}
-
-export { LicensingPremAdminSettings, LicensingPremAdminSettings as default };
diff --git a/dev/Stores/AbstractApp.js b/dev/Stores/AbstractApp.js
index f4e2e8ee6..43dd0fc0a 100644
--- a/dev/Stores/AbstractApp.js
+++ b/dev/Stores/AbstractApp.js
@@ -16,9 +16,6 @@ class AbstractAppStore {
});
this.interfaceAnimation.valueHasMutated();
-
- this.prem = ko.observable(false);
- this.community = ko.observable(true);
}
populate() {
@@ -27,9 +24,6 @@ class AbstractAppStore {
this.newMoveToFolder(!!Settings.settingsGet('NewMoveToFolder'));
this.interfaceAnimation(!!Settings.settingsGet('InterfaceAnimation'));
-
- this.prem(!!Settings.settingsGet('PremType'));
- this.community(!!Settings.settingsGet('Community'));
}
}
diff --git a/dev/Stores/Admin/License.js b/dev/Stores/Admin/License.js
deleted file mode 100644
index d86abde2d..000000000
--- a/dev/Stores/Admin/License.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import ko from 'ko';
-
-class LicenseAdminStore {
- constructor() {
- this.licensing = ko.observable(false);
- this.licensingProcess = ko.observable(false);
- this.licenseValid = ko.observable(false);
- this.licenseExpired = ko.observable(0);
- this.licenseError = ko.observable('');
-
- this.licenseTrigger = ko.observable(false);
- }
-}
-
-export default new LicenseAdminStore();
diff --git a/dev/View/Admin/Settings/Pane.js b/dev/View/Admin/Settings/Pane.js
index 2c8b853d8..9b6fa2aa4 100644
--- a/dev/View/Admin/Settings/Pane.js
+++ b/dev/View/Admin/Settings/Pane.js
@@ -25,9 +25,6 @@ class PaneSettingsAdminView extends AbstractViewNext {
this.adminDomain = ko.observable(Settings.settingsGet('AdminDomain'));
this.version = ko.observable(Settings.appSettingsGet('version'));
- this.capa = !!Settings.settingsGet('PremType');
- this.community = RL_COMMUNITY;
-
this.adminManLoading = ko.computed(
() =>
'000' !==
diff --git a/dev/View/Popup/Activate.js b/dev/View/Popup/Activate.js
deleted file mode 100644
index fbaee33ea..000000000
--- a/dev/View/Popup/Activate.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import ko from 'ko';
-
-import { StorageResultType, Notification } from 'Common/Enums';
-import { trim, isUnd } from 'Common/Utils';
-import { RAINLOOP_TRIAL_KEY } from 'Common/Consts';
-import { i18n, getNotification } from 'Common/Translator';
-
-import * as Settings from 'Storage/Settings';
-
-import Remote from 'Remote/Admin/Ajax';
-import LicenseStore from 'Stores/Admin/License';
-
-import { popup, command } from 'Knoin/Knoin';
-import { AbstractViewNext } from 'Knoin/AbstractViewNext';
-
-@popup({
- name: 'View/Popup/Activate',
- templateID: 'PopupsActivate'
-})
-class ActivatePopupView extends AbstractViewNext {
- constructor() {
- super();
-
- this.domain = ko.observable('');
- this.key = ko.observable('');
- this.key.focus = ko.observable(false);
- this.activationSuccessed = ko.observable(false);
-
- this.licenseTrigger = LicenseStore.licenseTrigger;
-
- this.activateProcess = ko.observable(false);
- this.activateText = ko.observable('');
- this.activateText.isError = ko.observable(false);
-
- this.htmlDescription = ko.computed(() => i18n('POPUPS_ACTIVATE/HTML_DESC', { 'DOMAIN': this.domain() }));
-
- this.key.subscribe(() => {
- this.activateText('');
- this.activateText.isError(false);
- });
-
- this.activationSuccessed.subscribe((value) => {
- if (value) {
- this.licenseTrigger(!this.licenseTrigger());
- }
- });
- }
-
- @command(
- (self) => !self.activateProcess() && '' !== self.domain() && '' !== self.key() && !self.activationSuccessed()
- )
- activateCommand() {
- this.activateProcess(true);
- if (this.validateSubscriptionKey()) {
- Remote.licensingActivate(
- (sResult, oData) => {
- this.activateProcess(false);
- if (StorageResultType.Success === sResult && oData.Result) {
- if (true === oData.Result) {
- this.activationSuccessed(true);
- this.activateText(i18n('POPUPS_ACTIVATE/SUBS_KEY_ACTIVATED'));
- this.activateText.isError(false);
- } else {
- this.activateText(oData.Result);
- this.activateText.isError(true);
- this.key.focus(true);
- }
- } else if (oData.ErrorCode) {
- this.activateText(getNotification(oData.ErrorCode));
- this.activateText.isError(true);
- this.key.focus(true);
- } else {
- this.activateText(getNotification(Notification.UnknownError));
- this.activateText.isError(true);
- this.key.focus(true);
- }
- },
- this.domain(),
- this.key().replace(/[^A-Z0-9-]/gi, '')
- );
- } else {
- this.activateProcess(false);
- this.activateText(i18n('POPUPS_ACTIVATE/ERROR_INVALID_SUBS_KEY'));
- this.activateText.isError(true);
- this.key.focus(true);
- }
- }
-
- onShow(isTrial) {
- this.domain(Settings.settingsGet('AdminDomain'));
- if (!this.activateProcess()) {
- isTrial = isUnd(isTrial) ? false : !!isTrial;
-
- this.key(isTrial ? RAINLOOP_TRIAL_KEY : '');
- this.activateText('');
- this.activateText.isError(false);
- this.activationSuccessed(false);
- }
- }
-
- onShowWithDelay() {
- if (!this.activateProcess()) {
- this.key.focus(true);
- }
- }
-
- /**
- * @returns {boolean}
- */
- validateSubscriptionKey() {
- const value = this.key();
- return (
- '' === value ||
- RAINLOOP_TRIAL_KEY === value ||
- !!/^RL[\d]+-[A-Z0-9-]+Z$/.test(trim(value).replace(/[^A-Z0-9-]/gi, ''))
- );
- }
-}
-
-export { ActivatePopupView, ActivatePopupView as default };
diff --git a/gulpfile.js b/gulpfile.js
index e78aabdef..cb15fb217 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const { cleanStatic } = require('./tasks/common');
diff --git a/index.php b/index.php
index 59e5087c2..7050b5ff5 100644
--- a/index.php
+++ b/index.php
@@ -3,7 +3,6 @@
if (!defined('APP_VERSION'))
{
define('APP_VERSION', '0.0.0');
- define('APP_VERSION_TYPE', 'source');
define('APP_INDEX_ROOT_FILE', __FILE__);
define('APP_INDEX_ROOT_PATH', str_replace('\\', '/', rtrim(dirname(__FILE__), '\\/').'/'));
}
diff --git a/makedeb.sh b/makedeb.sh
index 7e576bb52..1b293ed1e 100755
--- a/makedeb.sh
+++ b/makedeb.sh
@@ -12,7 +12,7 @@ mkdir rainloop-deb-build;
cd rainloop-deb-build;
#Prepare zip file
-unzip ../rainloop-community-latest.zip;
+unzip ../rainloop-legacy-latest.zip;
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
diff --git a/package.json b/package.json
index b80b9090c..405a46395 100644
--- a/package.json
+++ b/package.json
@@ -3,8 +3,8 @@
"title": "RainLoop Webmail",
"description": "Simple, modern & fast web-based email client",
"private": true,
- "version": "1.16.0",
- "ownCloudVersion": "5.4.0",
+ "version": "1.17.0",
+ "ownCloudVersion": "5.5.0",
"homepage": "https://www.rainloop.net",
"author": {
"name": "RainLoop Team",
@@ -18,18 +18,13 @@
"scripts": {
"watch-css": "gulp watchCss",
"watch-js": "webpack --color --watch",
- "build": "gulp all",
- "build-pro": "gulp all --pro"
+ "build": "gulp all"
},
"license": "SEE LICENSE IN LICENSE",
"licenses": [
{
- "type": "AGPL 3.0",
- "ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
- },
- {
- "type": "RainLoop Software License",
- "ulr": "https://www.rainloop.net/licensing/"
+ "type": "MIT",
+ "ulr": "https://choosealicense.com/licenses/mit/"
}
],
"bugs": {
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php b/rainloop/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php
index 21776274b..e81367565 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php
@@ -239,7 +239,8 @@ class HtmlUtils
$oWrapHtml->setAttribute($sKey, $sValue);
}
- $oWrapDom = $oDom->createElement('div', '___xxx___');
+ $sRndId = '__wrp__'.md5(APP_START.rand(10000, 99999).APP_START).'__';
+ $oWrapDom = $oDom->createElement('div', $sRndId);
$oWrapDom->setAttribute('data-x-div-type', 'body');
foreach ($aBodylAttrs as $sKey => $sValue)
{
@@ -250,7 +251,7 @@ class HtmlUtils
$sWrp = $oDom->saveHTML($oWrapHtml);
- $sResult = \str_replace('___xxx___', $sResult, $sWrp);
+ $sResult = \str_replace($sRndId, $sResult, $sWrp);
}
$sResult = \str_replace(\MailSo\Base\HtmlUtils::$KOS, ':', $sResult);
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
index 7cfa02c53..84df57d0d 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
@@ -112,9 +112,9 @@ class Actions
private $oTwoFactorAuthProvider;
/**
- * @var \RainLoop\Providers\Prem
+ * @var \RainLoop\Providers\Version
*/
- private $oPremProvider;
+ private $oVersionProvider;
/**
* @var \RainLoop\Config\Application
@@ -157,7 +157,7 @@ class Actions
$this->oSuggestionsProvider = null;
$this->oChangePasswordProvider = null;
$this->oTwoFactorAuthProvider = null;
- $this->oPremProvider = null;
+ $this->oVersionProvider = null;
$this->sSpecAuthToken = '';
$this->sUpdateAuthToken = '';
@@ -841,25 +841,18 @@ class Actions
}
/**
- * @return \RainLoop\Providers\Prem
+ * @return \RainLoop\Providers\Version
*/
- public function PremProvider()
+ public function VersionProvider()
{
- if (null === $this->oPremProvider)
+ if (null === $this->oVersionProvider)
{
- if (\file_exists(APP_VERSION_ROOT_PATH.'app/libraries/RainLoop/Providers/Prem.php'))
- {
- $this->oPremProvider = new \RainLoop\Providers\Prem(
- $this->Config(), $this->Logger(), $this->Cacher(null, true)
- );
- }
- else
- {
- $this->oPremProvider = false;
- }
+ $this->oVersionProvider = new \RainLoop\Providers\Version(
+ $this->Config(), $this->Logger()
+ );
}
- return $this->oPremProvider;
+ return $this->oVersionProvider;
}
/**
@@ -1428,14 +1421,6 @@ class Actions
return $this->GetAccountFromCustomToken($this->getLocalAuthToken(), $bThrowExceptionOnFalse, true, true);
}
- /**
- * @return bool
- */
- public function IsOpen()
- {
- return !$this->PremProvider();
- }
-
/**
* @param bool $bAdmin = false
* @param bool $bMobile = false
@@ -1482,7 +1467,7 @@ class Actions
'customLogoutLink' => $oConfig->Get('labs', 'custom_logout_link', ''),
'forgotPasswordLinkUrl' => \trim($oConfig->Get('login', 'forgot_password_link_url', '')),
'registrationLinkUrl' => \trim($oConfig->Get('login', 'registration_link_url', '')),
- 'hideSubmitButton' => (bool) $oConfig->Get('login', 'hide_submit_button', true),
+ 'hideSubmitButton' => (bool) $oConfig->Get('login', 'hide_submit_button', false),
'jsHash' => \md5(\RainLoop\Utils::GetConnectionToken()),
'useImapThread' => (bool) $oConfig->Get('labs', 'use_imap_thread', false),
'useImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true),
@@ -1496,7 +1481,6 @@ class Actions
'themes' => $this->GetThemes($bMobile, false),
'languages' => $this->GetLanguages(false),
'languagesAdmin' => $this->GetLanguages(true),
- 'appVersionType' => APP_VERSION_TYPE,
'attachmentsActions' => $aAttachmentsActions
), $bAdmin ? array(
'adminHostUse' => '' !== $oConfig->Get('security', 'admin_panel_host', ''),
@@ -1561,8 +1545,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
'ContactsIsAllowed' => false,
'ChangePasswordIsAllowed' => false,
'RequireTwoFactor' => false,
- 'Community' => true,
- 'PremType' => false,
'Admin' => array(),
'Capa' => array(),
'Plugins' => array(),
@@ -1574,11 +1556,17 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$aResult['AuthAccountHash'] = $sAuthAccountHash;
}
- $oPremProvider = $this->PremProvider();
- if ($oPremProvider)
- {
- $oPremProvider->PopulateAppData($aResult);
- }
+ $aResult['LoginLogo'] = $oConfig->Get('branding', 'login_logo', '');
+ $aResult['LoginBackground'] = $oConfig->Get('branding', 'login_background', '');
+ $aResult['LoginCss'] = $oConfig->Get('branding', 'login_css', '');
+ $aResult['LoginDescription'] = $oConfig->Get('branding', 'login_desc', '');
+ $aResult['UserLogo'] = $oConfig->Get('branding', 'user_logo', '');
+ $aResult['UserLogoTitle'] = $oConfig->Get('branding', 'user_logo_title', '');
+ $aResult['UserLogoMessage'] = $oConfig->Get('branding', 'user_logo_message', '');
+ $aResult['UserIframeMessage'] = $oConfig->Get('branding', 'user_iframe_message', '');
+ $aResult['UserCss'] = $oConfig->Get('branding', 'user_css', '');
+ $aResult['WelcomePageUrl'] = $oConfig->Get('branding', 'welcome_page_url', '');
+ $aResult['WelcomePageDisplay'] = \strtolower($oConfig->Get('branding', 'welcome_page_display', 'none'));
if ('' !== $aResult['LoadingDescription'] && 'RainLoop' !== $aResult['LoadingDescription'])
{
@@ -1811,9 +1799,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$aResult['AllowDropboxSocial'] = (bool) $oConfig->Get('social', 'dropbox_enable', false);
$aResult['DropboxApiKey'] = (string) $oConfig->Get('social', 'dropbox_api_key', '');
- $aResult['SubscriptionEnabled'] = (bool) \MailSo\Base\Utils::ValidateDomain($aResult['AdminDomain'], true);
-// || \MailSo\Base\Utils::ValidateIP($aResult['AdminDomain']);
-
$aResult['WeakPassword'] = (bool) $oConfig->ValidatePassword('12345');
$aResult['CoreAccess'] = (bool) $this->rainLoopCoreAccess();
@@ -3638,11 +3623,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
}
else if ($bVersionsCache)
{
- $oPremProvider = $this->PremProvider();
- if ($oPremProvider)
- {
- $oPremProvider->ClearOldVersion();
- }
+ $this->VersionProvider()->ClearOldVersion();
}
$this->Plugins()->RunHook('service.app-delay-start-end');
@@ -3884,11 +3865,19 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$this->setConfigFromParams($oConfig, 'DropboxEnable', 'social', 'dropbox_enable', 'bool');
$this->setConfigFromParams($oConfig, 'DropboxApiKey', 'social', 'dropbox_api_key', 'string');
- $oPremProvider = $this->PremProvider();
- if ($oPremProvider)
- {
- $oPremProvider->PremSection($this, $oConfig);
- }
+ $this->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
+ $this->setConfigFromParams($oConfig, 'LoginBackground', 'branding', 'login_background', 'string');
+ $this->setConfigFromParams($oConfig, 'LoginDescription', 'branding', 'login_desc', 'string');
+ $this->setConfigFromParams($oConfig, 'LoginCss', 'branding', 'login_css', 'string');
+
+ $this->setConfigFromParams($oConfig, 'UserLogo', 'branding', 'user_logo', 'string');
+ $this->setConfigFromParams($oConfig, 'UserLogoTitle', 'branding', 'user_logo_title', 'string');
+ $this->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
+ $this->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
+ $this->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
+
+ $this->setConfigFromParams($oConfig, 'WelcomePageUrl', 'branding', 'welcome_page_url', 'string');
+ $this->setConfigFromParams($oConfig, 'WelcomePageDisplay', 'branding', 'welcome_page_display', 'string');
return $this->DefaultResponse(__FUNCTION__, $oConfig->Save());
}
@@ -3971,48 +3960,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
public function DoAdminLicensing()
{
$this->IsAdminLoggined();
-
- $bForce = '1' === (string) $this->GetActionParam('Force', '0');
-
- $mResult = false;
- $iErrorCode = -1;
-
- $oPremProvider = $this->PremProvider();
-
- if ($oPremProvider && 2 < \strlen(APP_SITE))
- {
- $sValue = $oPremProvider->Fetcher($bForce);
-
- $this->requestSleep();
-
- $iExpired = 0;
- if ($oPremProvider->Parser($sValue, $iExpired))
- {
- $mResult = array(
- 'Banned' => false,
- 'Expired' => $iExpired,
- );
- }
- else if ($sValue === 'NO' || \preg_match('/^EXPIRED:[\d]+$/', $sValue))
- {
- $iErrorCode = -1;
- }
- else if ($sValue === 'TOO_MANY_CONNECTIONS')
- {
- $iErrorCode = -1;
- }
- else
- {
- $iErrorCode = \RainLoop\Notifications::LicensingServerIsUnavailable;
- }
- }
-
- if (0 < $iErrorCode && !$mResult)
- {
- throw new \RainLoop\Exceptions\ClientException($iErrorCode);
- }
-
- return $this->DefaultResponse(__FUNCTION__, $mResult);
+ throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::LicensingServerIsUnavailable);
}
/**
@@ -4021,50 +3969,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
public function DoAdminLicensingActivate()
{
$this->IsAdminLoggined();
-
- $sDomain = (string) $this->GetActionParam('Domain', '');
- $sKey = (string) $this->GetActionParam('Key', '');
-
- $mResult = false;
- $iErrorCode = -1;
-
- $oPrem = $this->PremProvider();
-
- if ($oPrem && 2 < \strlen($sDomain) && 2 < \strlen($sKey) && $sDomain === APP_SITE)
- {
- $iCode = 0;
- $sValue = $oPrem->Activate($sDomain, $sKey, $iCode);
-
- $this->requestSleep();
-
- $aMatch = array();
- if ('OK' === $sValue)
- {
- $mResult = true;
- }
- else if ('TOO_MANY_CONNECTIONS' === $sValue)
- {
- $mResult = 'Too many connections. Please try again later.';
- }
- else if (\preg_match('/^ERROR:(.+)$/', $sValue, $aMatch) && !empty($aMatch[1]))
- {
- $mResult = trim($aMatch[1]);
-
- $this->Logger()->Write('Activation error for: '.$sKey.' ('.$sDomain.')', \MailSo\Log\Enumerations\Type::ERROR);
- $this->Logger()->Write($mResult, \MailSo\Log\Enumerations\Type::ERROR);
- }
- else
- {
- $iErrorCode = \RainLoop\Notifications::LicensingServerIsUnavailable;
- }
- }
-
- if (0 < $iErrorCode && !$mResult)
- {
- throw new \RainLoop\Exceptions\ClientException($iErrorCode);
- }
-
- return $this->DefaultResponse(__FUNCTION__, $mResult);
+ throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::LicensingServerIsUnavailable);
}
/**
@@ -4670,7 +4575,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$bRainLoopUpdatable = $this->rainLoopUpdatable();
$bRainLoopAccess = $this->rainLoopCoreAccess();
- $oPremProvider = $this->PremProvider();
$aData = array();
if ($bRainLoopUpdatable && $bRainLoopAccess)
@@ -4679,9 +4583,9 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
}
$bResult = false;
- if ($bReal && $oPremProvider && !empty($aData['file']))
+ if ($bReal && !empty($aData['file']))
{
- $bResult = $oPremProvider->UpdateCore($this, $aData['file']);
+ $bResult = $this->VersionProvider()->UpdateCore($this, $aData['file']);
}
return $this->DefaultResponse(__FUNCTION__, $bResult);
@@ -9701,9 +9605,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
*/
public function StaticPath($sPath)
{
- $sKey = defined('APP_VERSION_TYPE') && 0 < strlen(APP_VERSION_TYPE) ? APP_VERSION_TYPE :
- ($this->IsOpen() ? 'community' : 'standard');
-
+ $sKey = 'legacy';
$sResult = \RainLoop\Utils::WebStaticPath().$sPath;
return $sResult.(false === \strpos($sResult, '?') ? '?' : '&').$sKey;
}
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
index 374264a5d..ff590775b 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
@@ -269,7 +269,7 @@ class Application extends \RainLoop\Config\AbstractConfig
'welcome_page' => array(false, ''),
- 'hide_submit_button' => array(true),
+ 'hide_submit_button' => array(false),
'forgot_password_link_url' => array('', ''),
'registration_link_url' => array('', ''),
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Enumerations/Capa.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Enumerations/Capa.php
index 56912b5e2..a4b16351a 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Enumerations/Capa.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Enumerations/Capa.php
@@ -4,7 +4,6 @@ namespace RainLoop\Enumerations;
class Capa
{
- const PREM = 'PREM';
const TWO_FACTOR = 'TWO_FACTOR';
const TWO_FACTOR_FORCE = 'TWO_FACTOR_FORCE';
const OPEN_PGP = 'OPEN_PGP';
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Prem.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Prem.php
deleted file mode 100644
index c3098738d..000000000
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Prem.php
+++ /dev/null
@@ -1,390 +0,0 @@
-oConfig = $oConfig;
- $this->oLogger = $oLogger;
- $this->oCacher = $oCacher;
- }
-
- /**
- * @return bool
- */
- public function Type()
- {
- static $bResult = null;
- if (null === $bResult)
- {
- $bResult = $this->Parser($this->Fetcher(false, true));
- }
-
- return $bResult;
- }
-
- /**
- * @return bool
- */
- public function IsActive()
- {
- return true;
- }
-
- /**
- * @param string $sInput
- * @param int $iExpired = 0
- *
- * @return bool
- */
- public function Parser($sInput, &$iExpired = 0)
- {
- $aMatch = array();
- if (\preg_match('/^EXPIRED:([\d]+)$/', $sInput, $aMatch))
- {
- $iExpired = (int) $aMatch[1];
- return \time() < $iExpired;
- }
-
- return false;
- }
-
- /**
- * @param array $aAppData
- */
- public function PopulateAppData(&$aAppData)
- {
- if (\is_array($aAppData))
- {
- $aAppData['Community'] = false;
-
- $oConfig = $this->oConfig;
- if ($oConfig && $this->Type())
- {
- $aAppData['PremType'] = true;
- $aAppData['LoginLogo'] = $oConfig->Get('branding', 'login_logo', '');
- $aAppData['LoginBackground'] = $oConfig->Get('branding', 'login_background', '');
- $aAppData['LoginCss'] = $oConfig->Get('branding', 'login_css', '');
- $aAppData['LoginDescription'] = $oConfig->Get('branding', 'login_desc', '');
- $aAppData['UserLogo'] = $oConfig->Get('branding', 'user_logo', '');
- $aAppData['UserLogoTitle'] = $oConfig->Get('branding', 'user_logo_title', '');
- $aAppData['UserLogoMessage'] = $oConfig->Get('branding', 'user_logo_message', '');
- $aAppData['UserIframeMessage'] = $oConfig->Get('branding', 'user_iframe_message', '');
- $aAppData['UserCss'] = $oConfig->Get('branding', 'user_css', '');
- $aAppData['WelcomePageUrl'] = $oConfig->Get('branding', 'welcome_page_url', '');
- $aAppData['WelcomePageDisplay'] = \strtolower($oConfig->Get('branding', 'welcome_page_display', 'none'));
- }
- }
- }
-
- public function PremSection(&$oActions, &$oConfig)
- {
- if ($oActions && $oActions->HasOneOfActionParams(array(
- 'LoginLogo', 'LoginBackground', 'LoginDescription', 'LoginCss',
- 'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss',
- 'WelcomePageUrl', 'WelcomePageDisplay'
- )) && $this->Type())
- {
- $oActions->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
- $oActions->setConfigFromParams($oConfig, 'LoginBackground', 'branding', 'login_background', 'string');
- $oActions->setConfigFromParams($oConfig, 'LoginDescription', 'branding', 'login_desc', 'string');
- $oActions->setConfigFromParams($oConfig, 'LoginCss', 'branding', 'login_css', 'string');
-
- $oActions->setConfigFromParams($oConfig, 'UserLogo', 'branding', 'user_logo', 'string');
- $oActions->setConfigFromParams($oConfig, 'UserLogoTitle', 'branding', 'user_logo_title', 'string');
- $oActions->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
- $oActions->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
- $oActions->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
-
- $oActions->setConfigFromParams($oConfig, 'WelcomePageUrl', 'branding', 'welcome_page_url', 'string');
- $oActions->setConfigFromParams($oConfig, 'WelcomePageDisplay', 'branding', 'welcome_page_display', 'string');
- }
- }
-
- /**
- * @return string
- */
- public function Activate($sDomain, $sKey, &$iCode)
- {
- $iCode = 0;
- $sContentType = '';
-
- $oHttp = \MailSo\Base\Http::SingletonInstance();
-
- $sResult = $oHttp->GetUrlAsString(APP_API_PATH.'activate/'.\urlencode($sDomain).'/'.\urlencode($sKey),
- 'RainLoop/'.APP_VERSION, $sContentType, $iCode, $this->oLogger, 10,
- $this->oConfig->Get('labs', 'curl_proxy', ''), $this->oConfig->Get('labs', 'curl_proxy_auth', ''),
- array(), false
- );
-
- if (200 !== $iCode)
- {
- $sResult = '';
- }
-
- return $sResult;
- }
-
- /**
- * @return string
- */
- public function Fetcher($sForce = false, $bLongCache = false, $iFastCacheTimeInMin = 10, $iLongCacheTimeInDays = 3)
- {
- $sDomain = \trim(APP_SITE);
-
- $oConfig = $this->oConfig;
- $oLogger = $this->oLogger;
- $oCacher = $this->oCacher;
-
- $oHttp = \MailSo\Base\Http::SingletonInstance();
-
- if (0 === \strlen($sDomain) || $oHttp->CheckLocalhost($sDomain) || !$oCacher || !$oConfig || !$oCacher->Verify(true))
- {
- return 'NO';
- }
-
- $sDomainKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain);
- $sDomainLongKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain);
-
- $sValue = '';
- if (!$sForce)
- {
- if ($bLongCache)
- {
- $bLock = $oCacher->GetLock($sDomainLongKeyValue);
- $iTime = $bLock ? 0 : $oCacher->GetTimer($sDomainLongKeyValue);
-
- if ($bLock || (0 < $iTime && \time() < $iTime + (60 * 60 * 24) * $iLongCacheTimeInDays))
- {
- $sValue = $oCacher->Get($sDomainLongKeyValue);
- }
- }
- else
- {
- $iTime = $oCacher->GetTimer($sDomainKeyValue);
- if (0 < $iTime && \time() < $iTime + 60 * $iFastCacheTimeInMin)
- {
- $sValue = $oCacher->Get($sDomainKeyValue);
- }
- }
- }
-
- if (0 === \strlen($sValue))
- {
- if ($bLongCache)
- {
- if (!$oCacher->SetTimer($sDomainLongKeyValue))
- {
- return 'NO';
- }
-
- $oCacher->SetLock($sDomainLongKeyValue);
- }
-
- $iCode = 0;
- $sContentType = '';
-
- $sValue = $oHttp->GetUrlAsString(APP_API_PATH.'status/'.\urlencode($sDomain),
- 'RainLoop/'.APP_VERSION, $sContentType, $iCode, $oLogger, 5,
- $oConfig->Get('labs', 'curl_proxy', ''), $oConfig->Get('labs', 'curl_proxy_auth', ''),
- array(), false
- );
-
- if ($oLogger)
- {
- $oLogger->Write($sValue);
- }
-
- if (404 === $iCode)
- {
- $sValue = 'NO';
- }
- else if (200 !== $iCode)
- {
- $sValue = '';
- }
-
- $oCacher->SetTimer($sDomainKeyValue);
-
- $oCacher->Set($sDomainKeyValue, $sValue);
- $oCacher->Set($sDomainLongKeyValue, $sValue);
-
- if ($bLongCache)
- {
- $oCacher->RemoveLock($sDomainLongKeyValue);
- }
- }
-
- return $sValue;
- }
-
- public function ClearOldVersion()
- {
- $sVPath = APP_INDEX_ROOT_PATH.'rainloop/v/';
-
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC: Begin');
- }
-
- $aDirs = @\array_map('basename', @\array_filter(@\glob($sVPath.'*'), 'is_dir'));
-
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC: Count:'.(\is_array($aDirs) ? \count($aDirs) : 0));
- }
-
- if (\is_array($aDirs) && 5 < \count($aDirs))
- {
- \uasort($aDirs, 'version_compare');
-
- foreach ($aDirs as $sName)
- {
- if (APP_DEV_VERSION !== $sName && APP_VERSION !== $sName)
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC: Begin to remove "'.$sVPath.$sName.'" version');
- }
-
- if (@\unlink($sVPath.$sName.'/index.php'))
- {
- @\MailSo\Base\Utils::RecRmDir($sVPath.$sName);
- }
- else
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC (Error): index file cant be removed from"'.$sVPath.$sName.'"',
- \MailSo\Log\Enumerations\Type::ERROR);
- }
- }
-
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC: End to remove "'.$sVPath.$sName.'" version');
- }
-
- break;
- }
- }
- }
-
- if ($this->oLogger)
- {
- $this->oLogger->Write('Versions GC: End');
- }
- }
-
- public function UpdateCore($oActions, $sFile)
- {
- $bResult = false;
-
- $sNewVersion = '';
- $sTmp = $oActions->downloadRemotePackageByUrl($sFile);
- if (!empty($sTmp))
- {
- include_once APP_VERSION_ROOT_PATH.'app/libraries/pclzip/pclzip.lib.php';
-
- $oArchive = new \PclZip($sTmp);
- $sTmpFolder = APP_PRIVATE_DATA.\md5($sTmp);
-
- \mkdir($sTmpFolder);
- if (\is_dir($sTmpFolder))
- {
- $bResult = 0 !== $oArchive->extract(PCLZIP_OPT_PATH, $sTmpFolder);
- if (!$bResult)
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Cannot extract package files: '.$oArchive->errorInfo(), \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
-
- if ($bResult && \file_exists($sTmpFolder.'/index.php') &&
- \is_writable(APP_INDEX_ROOT_PATH.'rainloop/') &&
- \is_writable(APP_INDEX_ROOT_PATH.'index.php') &&
- \is_dir($sTmpFolder.'/rainloop/'))
- {
- $aMatch = array();
- $sIndexFile = \file_get_contents($sTmpFolder.'/index.php');
- if (\preg_match('/\'APP_VERSION\', \'([^\']+)\'/', $sIndexFile, $aMatch) && !empty($aMatch[1]))
- {
- $sNewVersion = \trim($aMatch[1]);
- }
-
- if (empty($sNewVersion))
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Unknown version', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
- else if (!\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion))
- {
- \MailSo\Base\Utils::CopyDir($sTmpFolder.'/rainloop/', APP_INDEX_ROOT_PATH.'rainloop/');
-
- if (\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion) &&
- \is_file(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion.'/index.php'))
- {
- $bResult = \copy($sTmpFolder.'/index.php', APP_INDEX_ROOT_PATH.'index.php');
-
- if ($bResult)
- {
- if (\MailSo\Base\Utils::FunctionExistsAndEnabled('opcache_invalidate'))
- {
- @\opcache_invalidate(APP_INDEX_ROOT_PATH.'index.php', true);
- }
-
- if (\MailSo\Base\Utils::FunctionExistsAndEnabled('apc_delete_file'))
- {
- @\apc_delete_file(APP_INDEX_ROOT_PATH.'index.php');
- }
- }
- }
- else
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Cannot copy new package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- $this->oLogger->Write($sTmpFolder.'/rainloop/ -> '.APP_INDEX_ROOT_PATH.'rainloop/', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
- }
- else if (!empty($sNewVersion))
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('"'.$sNewVersion.'" version already installed', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
- }
- else if ($bResult)
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Cannot validate package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
-
- \MailSo\Base\Utils::RecRmDir($sTmpFolder);
- }
- else
- {
- if ($this->oLogger)
- {
- $this->oLogger->Write('Cannot create tmp folder: '.$sTmpFolder, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
- }
- }
-
- @\unlink($sTmp);
- }
-
- return $bResult;
- }
-}
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Version.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Version.php
new file mode 100644
index 000000000..978d92e2d
--- /dev/null
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Providers/Version.php
@@ -0,0 +1,188 @@
+oConfig = $oConfig;
+ $this->oLogger = $oLogger;
+ }
+
+ /**
+ * @return bool
+ */
+ public function IsActive()
+ {
+ return true;
+ }
+
+ public function ClearOldVersion()
+ {
+ $sVPath = APP_INDEX_ROOT_PATH.'rainloop/v/';
+
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC: Begin');
+ }
+
+ $aDirs = @\array_map('basename', @\array_filter(@\glob($sVPath.'*'), 'is_dir'));
+
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC: Count:'.(\is_array($aDirs) ? \count($aDirs) : 0));
+ }
+
+ if (\is_array($aDirs) && 5 < \count($aDirs))
+ {
+ \uasort($aDirs, 'version_compare');
+
+ foreach ($aDirs as $sName)
+ {
+ if (APP_DEV_VERSION !== $sName && APP_VERSION !== $sName)
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC: Begin to remove "'.$sVPath.$sName.'" version');
+ }
+
+ if (@\unlink($sVPath.$sName.'/index.php'))
+ {
+ @\MailSo\Base\Utils::RecRmDir($sVPath.$sName);
+ }
+ else
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC (Error): index file cant be removed from"'.$sVPath.$sName.'"',
+ \MailSo\Log\Enumerations\Type::ERROR);
+ }
+ }
+
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC: End to remove "'.$sVPath.$sName.'" version');
+ }
+
+ break;
+ }
+ }
+ }
+
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Versions GC: End');
+ }
+ }
+
+ public function UpdateCore($oActions, $sFile)
+ {
+ $bResult = false;
+
+ $sNewVersion = '';
+ $sTmp = $oActions->downloadRemotePackageByUrl($sFile);
+ if (!empty($sTmp))
+ {
+ include_once APP_VERSION_ROOT_PATH.'app/libraries/pclzip/pclzip.lib.php';
+
+ $oArchive = new \PclZip($sTmp);
+ $sTmpFolder = APP_PRIVATE_DATA.\md5($sTmp);
+
+ \mkdir($sTmpFolder);
+ if (\is_dir($sTmpFolder))
+ {
+ $bResult = 0 !== $oArchive->extract(PCLZIP_OPT_PATH, $sTmpFolder);
+ if (!$bResult)
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Cannot extract package files: '.$oArchive->errorInfo(), \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+
+ if ($bResult && \file_exists($sTmpFolder.'/index.php') &&
+ \is_writable(APP_INDEX_ROOT_PATH.'rainloop/') &&
+ \is_writable(APP_INDEX_ROOT_PATH.'index.php') &&
+ \is_dir($sTmpFolder.'/rainloop/'))
+ {
+ $aMatch = array();
+ $sIndexFile = \file_get_contents($sTmpFolder.'/index.php');
+ if (\preg_match('/\'APP_VERSION\', \'([^\']+)\'/', $sIndexFile, $aMatch) && !empty($aMatch[1]))
+ {
+ $sNewVersion = \trim($aMatch[1]);
+ }
+
+ if (empty($sNewVersion))
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Unknown version', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+ else if (!\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion))
+ {
+ \MailSo\Base\Utils::CopyDir($sTmpFolder.'/rainloop/', APP_INDEX_ROOT_PATH.'rainloop/');
+
+ if (\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion) &&
+ \is_file(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion.'/index.php'))
+ {
+ $bResult = \copy($sTmpFolder.'/index.php', APP_INDEX_ROOT_PATH.'index.php');
+
+ if ($bResult)
+ {
+ if (\MailSo\Base\Utils::FunctionExistsAndEnabled('opcache_invalidate'))
+ {
+ @\opcache_invalidate(APP_INDEX_ROOT_PATH.'index.php', true);
+ }
+
+ if (\MailSo\Base\Utils::FunctionExistsAndEnabled('apc_delete_file'))
+ {
+ @\apc_delete_file(APP_INDEX_ROOT_PATH.'index.php');
+ }
+ }
+ }
+ else
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Cannot copy new package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ $this->oLogger->Write($sTmpFolder.'/rainloop/ -> '.APP_INDEX_ROOT_PATH.'rainloop/', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+ }
+ else if (!empty($sNewVersion))
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('"'.$sNewVersion.'" version already installed', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+ }
+ else if ($bResult)
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Cannot validate package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+
+ \MailSo\Base\Utils::RecRmDir($sTmpFolder);
+ }
+ else
+ {
+ if ($this->oLogger)
+ {
+ $this->oLogger->Write('Cannot create tmp folder: '.$sTmpFolder, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
+ }
+ }
+
+ @\unlink($sTmp);
+ }
+
+ return $bResult;
+ }
+}
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
index e23a9b270..c46ee266a 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Service.php
@@ -230,16 +230,7 @@ class Service
$sResult .= '
-
-
-
-
\ No newline at end of file
diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSocial.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSocial.html
index 7fece3d3a..091b5a769 100644
--- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSocial.html
+++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsSocial.html
@@ -3,7 +3,7 @@
\ No newline at end of file
diff --git a/rainloop/v/0.0.0/include.php b/rainloop/v/0.0.0/include.php
index 9d7fdc2e9..605fd6e05 100644
--- a/rainloop/v/0.0.0/include.php
+++ b/rainloop/v/0.0.0/include.php
@@ -40,9 +40,6 @@
define('APP_DUMMY', '********');
define('APP_DEV_VERSION', '0.0.0');
define('APP_GOOGLE_ACCESS_TOKEN_PREFIX', ':GAT:');
- define('APP_WEB_SITE', 'http://www.rainloop.net/');
- define('APP_API_PATH', 'http://api.rainloop.net/');
- define('APP_STATUS_PATH', 'http://status.rainloop.net/');
define('APP_REPOSITORY_PATH', 'http://repository.rainloop.net/v1/');
define('APP_REPO_CORE_FILE', 'http://repository.rainloop.net/v2/core.{{channel}}.json');
diff --git a/tasks/assets.js b/tasks/assets.js
index bf8759635..0f967dc84 100644
--- a/tasks/assets.js
+++ b/tasks/assets.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const { config } = require('./config');
diff --git a/tasks/common.js b/tasks/common.js
index df934a3d2..62e2ea20c 100644
--- a/tasks/common.js
+++ b/tasks/common.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const rimraf = require('gulp-rimraf');
const fs = require('node-fs');
@@ -18,6 +18,6 @@ exports.zip = (srcDir, destDir, fileName) =>
.pipe(require('gulp-zip')(fileName))
.pipe(gulp.dest(destDir));
-exports.getHead = () => (!config.community ? config.head.rainloop : config.head.agpl);
+exports.getHead = () => config.head.mit;
exports.cleanStatic = () => exports.del(config.paths.static);
diff --git a/tasks/config.js b/tasks/config.js
index b03841cc1..ddc137fa0 100644
--- a/tasks/config.js
+++ b/tasks/config.js
@@ -1,15 +1,13 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const path = require('path');
const { argv } = require('yargs');
const config = {
head: {
- rainloop: '/* RainLoop Webmail (c) RainLoop Team | Licensed under RainLoop Software License */',
- agpl: '/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL v3 */'
+ mit: '/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */'
},
devVersion: '0.0.0',
releasesPath: 'build/dist/releases',
- community: !argv.pro,
source: !!argv.source,
watch: false,
watchInterval: 1000,
@@ -20,7 +18,6 @@ const config = {
cleanPath: '',
zipSrcPath: '',
zipFile: '',
- // zipFileShort: '',
paths: {}
};
diff --git a/tasks/css.js b/tasks/css.js
index 5a2d3e1ff..f178e3cb7 100644
--- a/tasks/css.js
+++ b/tasks/css.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const concat = require('gulp-concat-util');
diff --git a/tasks/js.js b/tasks/js.js
index 66542b36e..e32295d90 100644
--- a/tasks/js.js
+++ b/tasks/js.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const concat = require('gulp-concat-util'),
diff --git a/tasks/owncloud.js b/tasks/owncloud.js
index 864b4eb9e..2d418771e 100644
--- a/tasks/owncloud.js
+++ b/tasks/owncloud.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
/* eslint-disable consistent-return */
const gulp = require('gulp');
@@ -48,7 +48,7 @@ const owncloudSetup = (done) => {
.replace('0.0', '' + versionFull + '')
.replace(
'',
- '' + (config.community ? 'AGPLv3' : 'RainLoop Software License') + ''
+ 'MIT'
)
);
@@ -58,8 +58,7 @@ const owncloudSetup = (done) => {
config.destPath = config.releasesPath + '/owncloud/' + versionFull + '/';
config.cleanPath = dist;
config.zipSrcPath = dist;
- config.zipFile = 'rainloop-owncloud-app-' + (config.community ? '' : 'standard-') + versionFull + '.zip';
- // config.zipFileShort = 'rainloop' + (config.community ? '' : '-standard') + '.zip';
+ config.zipFile = 'rainloop-owncloud-app-legacy-' + versionFull + '.zip';
done();
};
@@ -80,10 +79,6 @@ const owncloudClean = (done) => {
done();
};
-// const owncloudShortname = (done) => {
-// copy(config.destPath + config.zipFile, config.destPath + config.zipFileShort, done);
-// };
-
exports.owncloud = gulp.series(
owncloudCopy,
rainloopBuild,
@@ -92,5 +87,4 @@ exports.owncloud = gulp.series(
owncloudSetup,
owncloudZip,
owncloudClean
- // owncloudShortname
);
diff --git a/tasks/rainloop.js b/tasks/rainloop.js
index 814882a8e..76f7929e4 100644
--- a/tasks/rainloop.js
+++ b/tasks/rainloop.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
/* eslint-disable consistent-return */
const gulp = require('gulp');
const fs = require('node-fs');
@@ -6,7 +6,7 @@ const chmod = require('gulp-chmod');
const pkg = require('../package.json');
const { config } = require('./config');
-const { copy, zip, del } = require('./common');
+const { zip, del } = require('./common');
const rainloopCopy = () => {
const versionFull = pkg.version,
@@ -32,23 +32,14 @@ const rainloopSetup = (done) => {
fs
.readFileSync('index.php', 'utf8')
.replace("'APP_VERSION', '0.0.0'", "'APP_VERSION', '" + versionFull + "'")
- .replace(
- "'APP_VERSION_TYPE', 'source'",
- "'APP_VERSION_TYPE', '" + (config.community ? 'community' : 'standard') + "'"
- )
);
fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php'));
- if (config.community) {
- require('rimraf').sync(dist + 'rainloop/v/' + versionFull + '/app/libraries/RainLoop/Providers/Prem.php');
- }
-
config.destPath = config.releasesPath + '/webmail/' + versionFull + '/';
config.cleanPath = dist;
config.zipSrcPath = dist;
- config.zipFile = 'rainloop-' + (config.community ? 'community-' : '') + versionFull + '.zip';
- // config.zipFileShort = 'rainloop-' + (config.community ? 'community-' : '') + 'latest.zip';
+ config.zipFile = 'rainloop-legacy-' + versionFull + '.zip';
config.rainloopBuilded = true;
@@ -71,8 +62,6 @@ const rainloopClean = (done) => {
done();
};
-// const rainloopShortName = (done) => copy(config.destPath + config.zipFile, config.destPath + config.zipFileShort, done);
-
exports.rainloopBuild = gulp.series(rainloopCopy, rainloopSetup);
-exports.rainloop = gulp.series(exports.rainloopBuild, rainloopZip, rainloopClean /*, rainloopShortName*/);
+exports.rainloop = gulp.series(exports.rainloopBuild, rainloopZip, rainloopClean);
diff --git a/tasks/vendors.js b/tasks/vendors.js
index 41a26f172..ee3668696 100644
--- a/tasks/vendors.js
+++ b/tasks/vendors.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const header = require('gulp-header');
const stripbom = require('gulp-stripbom');
diff --git a/tasks/watch.js b/tasks/watch.js
index bba3a4431..33e65f06b 100644
--- a/tasks/watch.js
+++ b/tasks/watch.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const gulp = require('gulp');
const { config } = require('./config');
diff --git a/tasks/webpack.js b/tasks/webpack.js
index 4452dfd21..3327cc8cf 100644
--- a/tasks/webpack.js
+++ b/tasks/webpack.js
@@ -1,4 +1,4 @@
-/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */
+/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
const webpack = require('webpack');
const gutil = require('gulp-util');
@@ -34,5 +34,5 @@ const webpackCallback = (done) => (err, stats) => {
};
exports.webpack = (done) => {
- webpack(webpackCfgBuilder(config.paths.staticJS, !config.community, 'production'), webpackCallback(done));
+ webpack(webpackCfgBuilder(config.paths.staticJS, 'production'), webpackCallback(done));
};
diff --git a/webpack.config.builder.js b/webpack.config.builder.js
index 9d88f56f3..e67612c68 100644
--- a/webpack.config.builder.js
+++ b/webpack.config.builder.js
@@ -55,7 +55,7 @@ const babelLoaderOptions = function() {
};
process.noDeprecation = true;
-module.exports = function(publicPath, pro, mode) {
+module.exports = function(publicPath, mode) {
return {
mode: mode || 'development',
devtool: 'inline-source-map',
@@ -80,7 +80,6 @@ module.exports = function(publicPath, pro, mode) {
},
plugins: [
new webpack.DefinePlugin({
- 'RL_COMMUNITY': !pro,
'process.env.NODE_ENV': JSON.stringify('production'),
'process.env': {
NODE_ENV: JSON.stringify('production')