iobroker.sonoff 2.5.1 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,218 +1,218 @@
1
- <html>
2
- <head>
3
- <!-- Materialze style -->
4
- <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
5
- <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
6
-
7
- <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
- <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
-
10
- <script type="text/javascript" src="../../js/translate.js"></script>
11
- <script type="text/javascript" src="../../lib/js/materialize.js"></script>
12
- <script type="text/javascript" src="../../js/adapter-settings.js"></script>
13
- <script type="text/javascript" src="words.js"></script>
14
-
15
- <script type="text/javascript">
16
- var onChange;
17
- var secret;
18
-
19
- function encrypt(key, value) {
20
- var result = '';
21
- for(var i = 0; i < value.length; ++i) {
22
- result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
23
- }
24
- return result;
25
- }
26
-
27
- function decrypt(key, value) {
28
- var result = '';
29
- for(var i = 0; i < value.length; ++i) {
30
- result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
31
- }
32
- return result;
33
- }
34
-
35
- function setValue(id, value) {
36
- var $value = $('#' + id + '.value');
37
- if ($value.attr('type') === 'checkbox') {
38
- $value.prop('checked', value).on('change', function () {
39
- onChange();
40
- });
41
- } else {
42
- $value.val(value).on('change', function () {
43
- onChange();
44
- }).keyup(function () {
45
- onChange();
46
- });
47
- }
48
- }
49
-
50
- function loadHelper(settings, param, subparam) {
51
- if (!settings) return;
52
-
53
- if (settings.useChunkPatch === undefined) settings.useChunkPatch = false;
54
- if (settings.timeout === undefined) settings.timeout = 300;
55
-
56
- for (var key in settings) {
57
- if (!settings.hasOwnProperty(key)) continue;
58
- if (key === 'pass') {
59
- settings[key] = decrypt(secret, settings[key]);
60
- }
61
- setValue(key, settings[key]);
62
- }
63
- $('#pass_confirm').val(settings.pass).on('change', function () {
64
- onChange();
65
- }).keyup(function () {
66
- onChange();
67
- });
68
- }
69
-
70
- // the function loadSettings has to exist ...
71
- function load(settings, _onChange) {
72
- onChange = _onChange;
73
- socket.emit('getObject', 'system.config', function (err, obj) {
74
- secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
75
- loadHelper(settings);
76
-
77
- getIPs(function (ips) {
78
- for (var i = 0; i < ips.length; i++) {
79
- $('#bind').append('<option value="' + ips[i].address + '">' + ips[i].name + '</option>');
80
- }
81
- $('#bind.value').val(settings.bind).select();
82
- });
83
-
84
- M.updateTextFields();
85
- });
86
-
87
- onChange(false);
88
- }
89
-
90
- function getSettings() {
91
- var obj = {};
92
- $('.value').each(function () {
93
- var $this = $(this);
94
- var id = $this.attr('id');
95
-
96
- if ($this.attr('type') === 'checkbox') {
97
- obj[id] = $this.prop('checked');
98
- } else {
99
- var value = $this.val();
100
- if (id === 'pass') {
101
- value = encrypt(secret, value);
102
- }
103
- obj[id] = value;
104
- }
105
- });
106
- return obj;
107
- }
108
-
109
- function save(callback) {
110
- if ($('#pass').val() !== $('#pass_confirm').val()) {
111
- return showMessage(_('Password confirmation is not equal with password'));
112
- }
113
-
114
- callback(getSettings());
115
- }
116
- </script>
117
- <style>
118
- .adapter-container>div {
119
- margin-bottom: 0 !important;
120
- }
121
- .page {
122
- height: calc(100% - 50px) !important;
123
- }
124
- .marg {
125
- margin-top: 5em;
126
- }
127
- </style>
128
- </head>
129
- <body>
130
- <form autocomplete="off" method="post" action="">
131
- <div class="m adapter-container">
132
- <div class="row">
133
- <div class="col s12">
134
- <div class="row">
135
- <div class="col s6">
136
- <img src="sonoff.png" class="logo" alt="logo"/>
137
- </div>
138
- </div>
139
- <div class="row">
140
- <div class="col s12">
141
- <h6 class="title translate">Connection settings</h6>
142
- </div>
143
- </div>
144
- <div class="row">
145
- <div class="col s12 m8 l5 input-field">
146
- <select class="value" id="bind"></select>
147
- <label class="translate" for="bind">IP</label>
148
- </div>
149
- </div>
150
- <div class="row">
151
- <div class="input-field col s6 m4 l2">
152
- <input id="port" type="number" min="1" max="65565" class="value"/>
153
- <label class="translate" for="port">Port:</label>
154
- </div>
155
- <div class="input-field col s6 m4 l2">
156
- <input id="timeout" type="number" min="1" max="99999" class="value"/>
157
- <label class="translate" for="timeout">Client timeout (sec):</label>
158
- </div>
159
- </div>
160
- <div class="row">
161
- <div class="col s12">
162
- <h6 class="title translate">Authentication settings</h6>
163
- </div>
164
- </div>
165
- <div class="row">
166
- <div class="input-field col s6 m4">
167
- <input id="user" autocomplete="new-password" type="text" class="value"/>
168
- <label class="translate" for="user">User:</label>
169
- </div>
170
- <div class="input-field col s6 m4">
171
- <input id="pass" autocomplete="new-password" type="password" class="value"/>
172
- <label class="translate" for="pass">Password:</label>
173
- </div>
174
- <div class="input-field col s6 m4">
175
- <input id="pass_confirm" autocomplete="new-password" type="password" />
176
- <label class="translate" for="pass_confirm">Password confirmation:</label>
177
- </div>
178
- </div>
179
- <div class="row">
180
- <div class="col s12">
181
- <h6 class="title translate">Auto creation of states</h6>
182
- </div>
183
- </div>
184
- <div class="row">
185
- <div class="input-field col s6 m4">
186
- <input id="TELE_SENSOR" type="checkbox" class="value"/>
187
- <span class="translate" for="TELE_SENSOR">For tele/SENSOR</span>
188
- </div>
189
- <div class="input-field col s6 m4">
190
- <input id="TELE_STATE" type="checkbox" class="value"/>
191
- <span class="translate" for="TELE_STATE">For tele/STATE</span>
192
- </div>
193
- <div class="input-field col s6 m4">
194
- <input id="STAT_RESULT" type="checkbox" class="value"/>
195
- <span class="translate" for="STAT_RESULT">For stat/RESULT</span>
196
- </div>
197
- <div class="input-field col s6 m4">
198
- <input id="OBJ_TREE" type="checkbox" class="value"/>
199
- <span class="translate" for="OBJ_TREE">Create object tree (WARNING! Check README.md!)</span>
200
- </div>
201
- </div>
202
- <div class="row">
203
- <div class="col s12">
204
- <h6 class="title translate">Connection settings</h6>
205
- </div>
206
- </div>
207
- <div class="row">
208
- <div class="input-field col s6 m4">
209
- <input id="ignorePings" type="checkbox" class="value"/>
210
- <span class="translate" for="ignorePings">Ignore warnings with pingreq</span>
211
- </div>
212
- </div>
213
- </div>
214
- </div>
215
- </div>
216
- </form>
217
- </body>
218
- </html>
1
+ <html>
2
+ <head>
3
+ <!-- Materialze style -->
4
+ <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
5
+ <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
6
+
7
+ <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
+ <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
+
10
+ <script type="text/javascript" src="../../js/translate.js"></script>
11
+ <script type="text/javascript" src="../../lib/js/materialize.js"></script>
12
+ <script type="text/javascript" src="../../js/adapter-settings.js"></script>
13
+ <script type="text/javascript" src="words.js"></script>
14
+
15
+ <script type="text/javascript">
16
+ var onChange;
17
+ var secret;
18
+
19
+ function encrypt(key, value) {
20
+ var result = '';
21
+ for(var i = 0; i < value.length; ++i) {
22
+ result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
23
+ }
24
+ return result;
25
+ }
26
+
27
+ function decrypt(key, value) {
28
+ var result = '';
29
+ for(var i = 0; i < value.length; ++i) {
30
+ result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
31
+ }
32
+ return result;
33
+ }
34
+
35
+ function setValue(id, value) {
36
+ var $value = $('#' + id + '.value');
37
+ if ($value.attr('type') === 'checkbox') {
38
+ $value.prop('checked', value).on('change', function () {
39
+ onChange();
40
+ });
41
+ } else {
42
+ $value.val(value).on('change', function () {
43
+ onChange();
44
+ }).keyup(function () {
45
+ onChange();
46
+ });
47
+ }
48
+ }
49
+
50
+ function loadHelper(settings, param, subparam) {
51
+ if (!settings) return;
52
+
53
+ if (settings.useChunkPatch === undefined) settings.useChunkPatch = false;
54
+ if (settings.timeout === undefined) settings.timeout = 300;
55
+
56
+ for (var key in settings) {
57
+ if (!settings.hasOwnProperty(key)) continue;
58
+ if (key === 'pass') {
59
+ settings[key] = decrypt(secret, settings[key]);
60
+ }
61
+ setValue(key, settings[key]);
62
+ }
63
+ $('#pass_confirm').val(settings.pass).on('change', function () {
64
+ onChange();
65
+ }).keyup(function () {
66
+ onChange();
67
+ });
68
+ }
69
+
70
+ // the function loadSettings has to exist ...
71
+ function load(settings, _onChange) {
72
+ onChange = _onChange;
73
+ socket.emit('getObject', 'system.config', function (err, obj) {
74
+ secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
75
+ loadHelper(settings);
76
+
77
+ getIPs(function (ips) {
78
+ for (var i = 0; i < ips.length; i++) {
79
+ $('#bind').append('<option value="' + ips[i].address + '">' + ips[i].name + '</option>');
80
+ }
81
+ $('#bind.value').val(settings.bind).select();
82
+ });
83
+
84
+ M.updateTextFields();
85
+ });
86
+
87
+ onChange(false);
88
+ }
89
+
90
+ function getSettings() {
91
+ var obj = {};
92
+ $('.value').each(function () {
93
+ var $this = $(this);
94
+ var id = $this.attr('id');
95
+
96
+ if ($this.attr('type') === 'checkbox') {
97
+ obj[id] = $this.prop('checked');
98
+ } else {
99
+ var value = $this.val();
100
+ if (id === 'pass') {
101
+ value = encrypt(secret, value);
102
+ }
103
+ obj[id] = value;
104
+ }
105
+ });
106
+ return obj;
107
+ }
108
+
109
+ function save(callback) {
110
+ if ($('#pass').val() !== $('#pass_confirm').val()) {
111
+ return showMessage(_('Password confirmation is not equal with password'));
112
+ }
113
+
114
+ callback(getSettings());
115
+ }
116
+ </script>
117
+ <style>
118
+ .adapter-container>div {
119
+ margin-bottom: 0 !important;
120
+ }
121
+ .page {
122
+ height: calc(100% - 50px) !important;
123
+ }
124
+ .marg {
125
+ margin-top: 5em;
126
+ }
127
+ </style>
128
+ </head>
129
+ <body>
130
+ <form autocomplete="off" method="post" action="">
131
+ <div class="m adapter-container">
132
+ <div class="row">
133
+ <div class="col s12">
134
+ <div class="row">
135
+ <div class="col s6">
136
+ <img src="sonoff.png" class="logo" alt="logo"/>
137
+ </div>
138
+ </div>
139
+ <div class="row">
140
+ <div class="col s12">
141
+ <h6 class="title translate">Connection settings</h6>
142
+ </div>
143
+ </div>
144
+ <div class="row">
145
+ <div class="col s12 m8 l5 input-field">
146
+ <select class="value" id="bind"></select>
147
+ <label class="translate" for="bind">IP</label>
148
+ </div>
149
+ </div>
150
+ <div class="row">
151
+ <div class="input-field col s6 m4 l2">
152
+ <input id="port" type="number" min="1" max="65565" class="value"/>
153
+ <label class="translate" for="port">Port:</label>
154
+ </div>
155
+ <div class="input-field col s6 m4 l2">
156
+ <input id="timeout" type="number" min="1" max="99999" class="value"/>
157
+ <label class="translate" for="timeout">Client timeout (sec):</label>
158
+ </div>
159
+ </div>
160
+ <div class="row">
161
+ <div class="col s12">
162
+ <h6 class="title translate">Authentication settings</h6>
163
+ </div>
164
+ </div>
165
+ <div class="row">
166
+ <div class="input-field col s6 m4">
167
+ <input id="user" autocomplete="new-password" type="text" class="value"/>
168
+ <label class="translate" for="user">User:</label>
169
+ </div>
170
+ <div class="input-field col s6 m4">
171
+ <input id="pass" autocomplete="new-password" type="password" class="value"/>
172
+ <label class="translate" for="pass">Password:</label>
173
+ </div>
174
+ <div class="input-field col s6 m4">
175
+ <input id="pass_confirm" autocomplete="new-password" type="password" />
176
+ <label class="translate" for="pass_confirm">Password confirmation:</label>
177
+ </div>
178
+ </div>
179
+ <div class="row">
180
+ <div class="col s12">
181
+ <h6 class="title translate">Auto creation of states</h6>
182
+ </div>
183
+ </div>
184
+ <div class="row">
185
+ <div class="input-field col s6 m4">
186
+ <input id="TELE_SENSOR" type="checkbox" class="value"/>
187
+ <span class="translate" for="TELE_SENSOR">For tele/SENSOR</span>
188
+ </div>
189
+ <div class="input-field col s6 m4">
190
+ <input id="TELE_STATE" type="checkbox" class="value"/>
191
+ <span class="translate" for="TELE_STATE">For tele/STATE</span>
192
+ </div>
193
+ <div class="input-field col s6 m4">
194
+ <input id="STAT_RESULT" type="checkbox" class="value"/>
195
+ <span class="translate" for="STAT_RESULT">For stat/RESULT</span>
196
+ </div>
197
+ <div class="input-field col s6 m4">
198
+ <input id="OBJ_TREE" type="checkbox" class="value"/>
199
+ <span class="translate" for="OBJ_TREE">Create object tree (WARNING! Check README.md!)</span>
200
+ </div>
201
+ </div>
202
+ <div class="row">
203
+ <div class="col s12">
204
+ <h6 class="title translate">Connection settings</h6>
205
+ </div>
206
+ </div>
207
+ <div class="row">
208
+ <div class="input-field col s6 m4">
209
+ <input id="ignorePings" type="checkbox" class="value"/>
210
+ <span class="translate" for="ignorePings">Ignore warnings with pingreq</span>
211
+ </div>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ </div>
216
+ </form>
217
+ </body>
218
+ </html>