summaryrefslogtreecommitdiff
path: root/src/store
diff options
context:
space:
mode:
authorVitalii Lysak <v.lysak@dunice.net>2022-09-20 13:35:38 +0300
committerVitalii Lysak <v.lysak@dunice.net>2022-09-20 13:35:38 +0300
commit4d04ae12f310f1bccf1270f1d3a4090b888ecf6e (patch)
tree793e75c70b133a1ddf2dbfe56134ef869ca7fc62 /src/store
parentab93e8470ddb49f4a522446dfb9c7882ff37daaf (diff)
parent37f6f72ff1ed6d4795c3f67ca2ba92367582e562 (diff)
downloadwebui-vue-4d04ae12f310f1bccf1270f1d3a4090b888ecf6e.tar.xz
merge smtp, snmp, syslog
Diffstat (limited to 'src/store')
-rw-r--r--src/store/index.js6
-rw-r--r--src/store/modules/Settings/SmtpStore.js100
-rw-r--r--src/store/modules/Settings/SnmpStore.js73
-rw-r--r--src/store/modules/Settings/SyslogStore.js36
4 files changed, 215 insertions, 0 deletions
diff --git a/src/store/index.js b/src/store/index.js
index a4dd16ed..a9afa310 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -30,6 +30,9 @@ import PoliciesStore from './modules/SecurityAndAccess/PoliciesStore';
import FactoryResetStore from './modules/Operations/FactoryResetStore';
import KeyClearStore from './modules/Operations/KeyClearStore';
import PciStore from './modules/HardwareStatus/PciStore';
+import SmtpStore from './modules/Settings/SmtpStore';
+import SnmpStore from './modules/Settings/SnmpStore';
+import SyslogStore from './modules/Settings/SyslogStore';
import WebSocketPlugin from './plugins/WebSocketPlugin';
import DateTimeStore from './modules/Settings/DateTimeStore';
@@ -73,6 +76,9 @@ export default new Vuex.Store({
factoryReset: FactoryResetStore,
keyClear: KeyClearStore,
pciStore: PciStore,
+ smtpStore: SmtpStore,
+ snmpStore: SnmpStore,
+ syslogStore: SyslogStore,
},
plugins: [WebSocketPlugin],
});
diff --git a/src/store/modules/Settings/SmtpStore.js b/src/store/modules/Settings/SmtpStore.js
new file mode 100644
index 00000000..195f245a
--- /dev/null
+++ b/src/store/modules/Settings/SmtpStore.js
@@ -0,0 +1,100 @@
+import api from '@/store/api';
+import i18n from '@/i18n';
+
+const SmtpStore = {
+ namespaced: true,
+ state: {
+ settings: {},
+ subscribers: [],
+ },
+ getters: {
+ settings: (state) => state.settings,
+ subscribers: (state) => state.subscribers,
+ },
+ mutations: {
+ saveSettings: (state, data) => (state.settings = data),
+ setSubscribers: (state, data) => (state.subscribers = data),
+ },
+ actions: {
+ async deleteSubscriber({ dispatch }, email) {
+ return await api
+ .get(`/redfish/v1/Smtp/DeleteMails&${email}`)
+ .then(async () => {
+ await dispatch('getSubscribers');
+ return i18n.t('pageTransfer.smtp.deleteSubscriberSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.smtp.deleteSubscriberError'));
+ });
+ },
+
+ async addSubscriber({ dispatch }, payload) {
+ return await api
+ .get(`/redfish/v1/Smtp/AddMails&${payload.email}`)
+ .then(async () => {
+ await dispatch('getSubscribers');
+ return i18n.t('pageTransfer.smtp.saveSubscriberSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.smtp.saveSubscriberError'));
+ });
+ },
+
+ async getSubscribers({ commit }) {
+ return await api
+ .get('/redfish/v1/Smtp/GetMails')
+ .then(({ data: { mails = [] } = {} }) =>
+ mails.map((host) => {
+ return {
+ host,
+ };
+ })
+ )
+ .then((subscribers) => commit('setSubscribers', subscribers))
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageUserManagement.toast.errorLoadUsers'));
+ });
+ },
+
+ async setSettings({ dispatch }, payload) {
+ let url = `/redfish/v1/Smtp/SetSettings`;
+ for (let key in payload) {
+ url += `&${key}=${payload[key]}`;
+ }
+
+ return await api
+ .get(url)
+ .then(async () => {
+ await dispatch('getSettings');
+ return i18n.t('pageTransfer.saveSmtpSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.saveSmtpError'));
+ });
+ },
+
+ async getSettings({ commit }) {
+ return await api
+ .get('/redfish/v1/Smtp/GetSettings')
+ .then(({ data = {} }) => {
+ commit('saveSettings', data);
+ })
+ .catch((error) => console.log(error));
+ },
+
+ async sendTestMessage(_, payload) {
+ let url = `/redfish/v1/Smtp/SendMail`;
+ for (let key in payload) {
+ url += `&${key}=${payload[key]}`;
+ }
+
+ return await api.get(url);
+ },
+ },
+};
+
+export default SmtpStore;
diff --git a/src/store/modules/Settings/SnmpStore.js b/src/store/modules/Settings/SnmpStore.js
new file mode 100644
index 00000000..3fda494f
--- /dev/null
+++ b/src/store/modules/Settings/SnmpStore.js
@@ -0,0 +1,73 @@
+import api from '@/store/api';
+import i18n from '@/i18n';
+
+const SnmpStore = {
+ namespaced: true,
+ state: { subscribers: [] },
+ getters: { subscribers: (state) => state.subscribers },
+ mutations: {
+ setSubscribers: (state, data) => (state.subscribers = data),
+ },
+ actions: {
+ async deleteSubscriber({ dispatch }, index) {
+ return await api
+ .delete(`/redfish/v1/EventService/Subscriptions/${index}`)
+ .then(async () => {
+ await dispatch('getSubscribers');
+ return i18n.t('pageTransfer.snmp.deleteSubscriberSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.snmp.deleteSubscriberError'));
+ });
+ },
+ async addSubscriber({ dispatch }, payload) {
+ return await api
+ .post('/redfish/v1/EventService/Subscriptions', payload)
+ .then(async () => {
+ await dispatch('getSubscribers');
+ return i18n.t('pageTransfer.snmp.saveSubscriberSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.snmp.saveSubscriberError'));
+ });
+ },
+ async getSubscribers({ commit }) {
+ return await api
+ .get('/redfish/v1/EventService/Subscriptions')
+ .then(({ data: { Members } }) => {
+ return Members.filter((member) =>
+ member['@odata.id'].includes('snmp')
+ );
+ })
+ .then((members) => {
+ return api.all(members.map((member) => api.get(member['@odata.id'])));
+ })
+ .then((subscribersRow) => {
+ return subscribersRow.map((subscriberRow) => {
+ return subscriberRow.data;
+ });
+ })
+ .then((data) => {
+ return data.map((subscriber) => {
+ const host = subscriber.Destination.split('/')[2].split(':')[0];
+ const port = subscriber.Destination.split('/')[2].split(':')[1];
+ return {
+ ...subscriber,
+ host,
+ port,
+ };
+ });
+ })
+ .then((subscribers) => commit('setSubscribers', subscribers))
+ .catch((error) => {
+ console.log(error);
+ const message = i18n.t('pageUserManagement.toast.errorLoadUsers');
+ throw new Error(message);
+ });
+ },
+ },
+};
+
+export default SnmpStore;
diff --git a/src/store/modules/Settings/SyslogStore.js b/src/store/modules/Settings/SyslogStore.js
new file mode 100644
index 00000000..f0b0eb59
--- /dev/null
+++ b/src/store/modules/Settings/SyslogStore.js
@@ -0,0 +1,36 @@
+import api from '@/store/api';
+import i18n from '@/i18n';
+
+const SyslogStore = {
+ namespaced: true,
+ state: { settings: {} },
+ getters: { settings: (state) => state.settings },
+ mutations: {
+ saveSettings: (state, data) => (state.settings = data),
+ },
+ actions: {
+ async saveSettings({ dispatch }, payload) {
+ return await api
+ .post('/redfish/v1/Syslog/Actions/Syslog.UpdateConfig', payload)
+ .then(async () => {
+ await dispatch('getSettings');
+ return i18n.t('pageTransfer.syslog.saveSettingsSuсcess');
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(i18n.t('pageTransfer.syslog.saveSettingsError'));
+ });
+ },
+
+ async getSettings({ commit }) {
+ return await api
+ .get('/redfish/v1/Syslog')
+ .then(({ data: { Configuration = {} } = {} }) => {
+ commit('saveSettings', Configuration);
+ })
+ .catch((error) => console.log(error));
+ },
+ },
+};
+
+export default SyslogStore;