Last modified by Kilight Cao on 2025/05/09 11:46

From version 44.7
edited by Xiaoling
on 2022/07/25 17:26
Change comment: There is no comment for this version
To version 5.1
edited by Edwin Chen
on 2022/05/02 09:07
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Xiaoling
1 +XWiki.Edwin
Content
... ... @@ -1,24 +1,17 @@
1 -**Table of Contents:**
2 -
1 +{{box cssClass="floatinginfobox" title="**Contents**"}}
3 3  {{toc/}}
3 +{{/box}}
4 4  
5 += Monitor Gateway =
5 5  
7 +== Introduction ==
6 6  
7 -
8 -= **1.  Monitor Gateway** =
9 -
10 -== **1.1  Introduction** ==
11 -
12 -
13 13  This introduction shows how to use a script to monitor the gateway. The video link for this instruction is: [[https:~~/~~/youtu.be/8PieIwfSF_g>>url:https://youtu.be/8PieIwfSF_g]]
14 14  
15 -[[image:image-20220531155018-18.png]]
11 +[[image:https://wiki.dragino.com/images/thumb/d/dc/Monitor_gateway.png/600px-Monitor_gateway.png||height="456" width="600"]]
16 16  
13 +== Steps ==
17 17  
18 -
19 -== **1.2  Steps** ==
20 -
21 -
22 22  * Create account in ThingsSpeak and creat channel.
23 23  * Download script from dragino site and move it to properly directory
24 24  
... ... @@ -35,7 +35,6 @@
35 35  root@dragino-1baf44:~~#
36 36  )))
37 37  
38 -
39 39  * change the script monitor_gateway.sh with properly users setting:
40 40  
41 41  (% class="box infomessage" %)
... ... @@ -42,18 +42,25 @@
42 42  (((
43 43  USER='xxxxx'             # user name in your thinkspeak ~-~-> Profile
44 44  PASS='xxxxx'     #MQTT_API_KEY in your thinkspeak ~-~-> Profile
37 +)))
38 +
39 +(% class="box infomessage" %)
40 +(((
45 45  CHAN_ID='xxxx'    #Channel ID   of the channel for this gateway
46 46  CHAN_KEY='xxxxx'   #Channel Write API  of the channel for this gateway
47 47  )))
48 48  
45 +* run **/usr/bin/monitor_gateway.sh** to test if upload is good.
49 49  
50 -* run (% style="color:blue" %)**/usr/bin/monitor_gateway.sh**(%%) to test if upload is good.
47 +* Add monitor_gateway.sh to cron work **/etc/crontabs/root** to make this script runs perdiocally, below is an example to update every 20 minutes
51 51  
52 -* Add monitor_gateway.sh to cron work (% style="color:blue" %)**/etc/crontabs/root**(%%) to make this script runs perdiocally, below is an example to update every 20 minutes
49 +(% class="box infomessage" %)
50 +(((
51 + # For details see man 4 crontabs
52 +)))
53 53  
54 54  (% class="box infomessage" %)
55 55  (((
56 -# For details see man 4 crontabs
57 57  # Example of job definition:
58 58  # .~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- minute (0 - 59)
59 59  # | .~-~-~-~-~-~-~-~-~-~-~-~-- hour (0 - 23)
... ... @@ -62,7 +62,15 @@
62 62  # | | | | .~-~-~-~- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
63 63  # | | | | |
64 64  # * * * * * user-name command to be executed
64 +)))
65 +
66 +(% class="box infomessage" %)
67 +(((
65 65  #*/10 * * * *  checklog
69 +)))
70 +
71 +(% class="box infomessage" %)
72 +(((
66 66  ~* 23 * * *  /etc/init.d/auto_update start
67 67  */20 * * * *  /usr/bin/monitor_gateway.sh     
68 68  )))
... ... @@ -69,79 +69,37 @@
69 69  
70 70  * Reboot device.
71 71  
79 +== Monitor Public IP ==
72 72  
73 -
74 -== **1.3  Monitor Public IP** ==
75 -
76 -
77 77  The monitor_gateway.sh has been updated to upload the public ip of the device as well.
78 78  
79 79  User can find the public ip in field7, the chart is not able to show the complete public ip, user can check that in the export.
80 80  
85 +[[~[~[image:https://wiki.dragino.com/images/thumb/8/8f/Monitor_gateway_1.png/600px-Monitor_gateway_1.png~|~|height="332" width="586"~]~]>>url:https://wiki.dragino.com/index.php/File:Monitor_gateway_1.png]]
81 81  
82 -[[image:image-20220531145559-2.png]]
83 -
84 84  Find Public IP
85 85  
86 86  
87 87  
88 -= **2.  Remote Access** =
91 += Remote Access =
89 89  
90 -== **2.1  Remote Access via Remote.it.** ==
93 +== Remote Access via Remote.it. ==
91 91  
92 -
93 93  Remote.it for remote access is available in the latest Dragino firmware for gateway. For security concern, the remote.it only available base on end user demand.
94 94  
97 +Important Notice:
95 95  
96 -(% style="color:red" %)**Important Notice:**
97 -
98 98  * Remote.it access will give full control of your device to remote support.
99 -* The Remote.it allows Dragino Support to remote access to the device, If user want to access himself, it need to sign up for an remote.it account.
100 +* The Remote.it allow Dragino Support to remote access to the device, If user want to access himself, it need to sign up for an remote.it account.
100 100  
101 -* For how to use remote.it for (% style="color:blue" %)**general remote control**(%%), please see :  [[Remoteit user instruction for Dragino Gateway>>url:https://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/&file=Dragino-Remoteit_User_Manual.pdf]].
102 -* For Quick add remote.it to (% style="color:blue" %)**Dragino for remote debug**(%%), please see below:
102 +For how to use remoteit, please see : [[Remoteit user instruction for Dragino Gateway>>url:https://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/&file=Dragino-Remoteit_User_Manual.pdf]].
103 103  
104 104  
105 -(% style="color:blue" %)**1. Install the Remote.it software**
105 +== RSSH Introduction ==
106 106  
107 -Users can directly click** "Install"** on the Web UI to install Remote. it.
108 -
109 -
110 -[[image:image-20220725134300-1.png||height="438" width="905"]]
111 -
112 -
113 -
114 -(% style="color:blue" %)**2. Enter the license key**
115 -
116 -Users need to enter the license key in the box under **"2. Register"** section and click the **"Save"** button and** "Register"** button.
117 -
118 -(% style="color:red" %)**When the user enters this license key, Dragino support will have access to your gateway.**
119 -
120 -
121 -(% class="box infomessage" %)
122 -(((
123 -**57F60715-606F-510D-A3D2-739860EBDB98**
124 -)))
125 -
126 -[[image:image-20220725113010-1.png||height="455" width="899"]]
127 -
128 -
129 -
130 -(% style="color:blue" %)**3. Connect and tell us your device ID or Hostname**
131 -
132 -Users can view the device ID or Hostname of the gateway on** (% style="color:red" %)System ~-~-> System Overview(%%)** interface.Such as : dragino-1ef9ac
133 -
134 -
135 -[[image:image-20220725115720-2.png||height="658" width="900"]]
136 -
137 -
138 -
139 -== **2.2  RSSH Introduction** ==
140 -
141 -
142 142  Reverse SSH for remote access is available in the latest Dragino firmware for gateway. For security concern, the RSSH only available base on end user demand.
143 143  
144 -(% style="color:red" %)**Important Notice:**
109 +Important Notice:
145 145  
146 146  (% class="box warningmessage" %)
147 147  (((
... ... @@ -149,9 +149,8 @@
149 149  This RSSH allow Dragino Support to remote access to the device, If user want to access himself, he need to set up the RSSH server himself.
150 150  )))
151 151  
117 +Below gateway support reverse SSH access:
152 152  
153 -**Below gateway support reverse SSH access:**
154 -
155 155  * Firmware Version > lgw~-~-build-v5.4.1618196981-20210412-1111 [[Firmware Download>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/LPS8/Firmware/Release/]]
156 156  * LG01N, OLG01N (Note: LG01-P LG01-S doesn't support)
157 157  * LG02, OLG02
... ... @@ -160,239 +160,86 @@
160 160  * LIG16
161 161  * MS14 series if installed with the same firmware.
162 162  
127 +=== End User Guide to use SSH access ===
163 163  
164 -
165 -
166 -=== **2.2.1  End User Guide to use SSH access** ===
167 -
168 -
169 169  Go to this the Reverse SSH page as below:
170 170  
131 +[[~[~[image:https://wiki.dragino.com/images/thumb/5/55/RSSH_Menu2.png/500px-RSSH_Menu2.png~|~|height="256" width="500"~]~]>>url:https://wiki.dragino.com/index.php/File:RSSH_Menu2.png]]
171 171  
172 -[[image:image-20220531150151-3.png]]
173 -
174 174  Get the RSSH configure page
175 175  
135 +[[~[~[image:https://wiki.dragino.com/images/thumb/7/78/RSSH_Menu3.png/500px-RSSH_Menu3.png~|~|height="313" width="500"~]~]>>url:https://wiki.dragino.com/index.php/File:RSSH_Menu3.png]]
176 176  
177 -
178 -[[image:image-20220531150338-4.png]]
179 -
180 180  Connection OK.
181 181  
139 +* **Login ID**: Input sshuser
140 +* **Host Address**: Input support.dragino.com
141 +* **Host Port** : Please email to support @ dragino.com to get a valid host port.
142 +* **Connect at Startup** : Choose to enable connect once the device is powered.
143 +* **Network Keys**; Click the Generate keys to generate the keys and download / mail it to Dragino support so Dragino can prepare the remote access to
182 182  
183 -* (% style="color:#037691" %)**Login ID**(%%):  Input sshuser
184 -* (% style="color:#037691" %)**Host Address**(%%):  Input support.dragino.com
185 -* (% style="color:#037691" %)**Host Port** (%%):  Please email to support @ dragino.com to get a valid host port.
186 -* (% style="color:#037691" %)**Connect at Startup**(%%) : Choose to enable connect once the device is powered.
187 -* (% style="color:#037691" %)**Network Keys**(%%):  Click the Generate keys to generate the keys and download / mail it to Dragino support so Dragino can prepare the remote access to
188 -
189 -
190 -
191 191  After doing above, please download and mail the public keys to Dragino support and wait for our mail for the valid host port. Input the valid host port got from our support and click connect so we can remote access to your gateway.
192 192  
193 193  
148 +Set Up RSSH Server
194 194  
195 -=== **2.2.2  Set Up RSSH Server** ===
196 196  
151 +===== Step 1:Download the SSH service code =====
197 197  
198 -Advance administrator can config a SSH server to provide support their end user themselves., Steps as below
153 +1).git clone [[https:~~/~~/github.com/dragino/rssh-server.git>>url:https://github.com/dragino/rssh-server.git]] rssh-server
199 199  
155 +[[~[~[image:https://wiki.dragino.com/images/thumb/d/d0/Git_clone.png/500px-Git_clone.png~|~|height="80" width="500"~]~]>>url:https://wiki.dragino.com/index.php/File:Git_clone.png]]
200 200  
157 +git clone rssh-server
201 201  
202 -==== (% style="color:blue" %)**Step 1 :  Download the SSH service code**(%%) ====
159 +2).cd rssh-server; sudo make ~-~--> to Generate the execute file:rssh_serv
203 203  
161 +[[~[~[image:https://wiki.dragino.com/images/thumb/e/e3/Generate_the_execute_file.png/500px-Generate_the_execute_file.png~|~|height="103" width="500"~]~]>>url:https://wiki.dragino.com/index.php/File:Generate_the_execute_file.png]]
204 204  
205 -**1).**  git clone [[https:~~/~~/github.com/dragino/rssh-server.git>>url:https://github.com/dragino/rssh-server.git]] rssh-server
163 +Generate the execute file
206 206  
207 -[[image:image-20220531150750-5.png]]
208 -
209 -
210 -**2).**  cd rssh-server; sudo make ~-~--> to Generate the execute file:rssh_serv
211 -
212 -[[image:image-20220531150811-6.png]]
213 -
214 -
215 215  **Debug** :
216 216  
217 -(((
218 -(% class="box" %)
219 -(((
220 -if you git fail.  ~-~->  (% style="color:#037691" %)**sudo: git: command not found**(%%).
221 -please install git.  ~-~->    (% style="color:#037691" %)**yum install git -y  or  apt-get install git -y**(%%).
222 -if you make error 127,it** (% style="color:#037691" %)lack of gcc(%%)**.
223 -please install gcc.  ~-~->  (% style="color:#037691" %)**yum install gcc**(%%).
224 -)))
225 -)))
167 +{{{ if you git fail. --> sudo: git: command not found.
168 + please install git. --> yum install git -y or apt-get install git -y.
169 +}}}
226 226  
227 -[[image:image-20220531151516-7.png]]
171 +{{{ if you make error 127,it lack of gcc.
172 + please install gcc. -->yum install gcc.
173 +}}}
228 228  
175 +[[~[~[image:https://wiki.dragino.com/images/d/d7/Lack_of_gcc.png~|~|height="174" width="434"~]~]>>url:https://wiki.dragino.com/index.php/File:Lack_of_gcc.png]]
229 229  
230 -(((
231 -(% class="box" %)
232 -(((
233 -if you make a fatal error : sqlite3.h,it (% style="color:#037691" %)**lack of sqlite3**(%%).
234 -please insatell sqlite3.
235 -)))
236 -)))
177 +lack of gcc
237 237  
238 -[[image:image-20220531151628-8.png]]
179 +{{{ if you make a fatal error : sqlite3.h,it lack of sqlite3.
180 + please insatell sqlite3.
181 +}}}
239 239  
183 +[[~[~[image:https://wiki.dragino.com/images/thumb/9/93/Lack_of_sqlite3.png/500px-Lack_of_sqlite3.png~|~|height="137" width="500"~]~]>>url:https://wiki.dragino.com/index.php/File:Lack_of_sqlite3.png]]
240 240  
241 -(% style="color:blue" %)**How to install Sqlit3**
185 +lack of sqlite3
242 242  
243 -(% class="box infomessage" %)
244 -(((
245 -**~ Step 1:** Download the SQLit3 installation package
246 - sudo wget **[[https:~~/~~/www.sqlite.org/2021/sqlite-autoconf-3350400.tar.gz>>url:https://www.sqlite.org/2021/sqlite-autoconf-3350400.tar.gz]]**
187 +How to install Sqlit3
247 247  
248 -
249 -**Step 2: **tar the SQLit3 installation package
189 +{{{ Step1:Download the SQLit3 installation package
190 + sudo wget
191 + Step2:tar the SQLit3 installation package
250 250   sudo tar -zxvf sqlite-autoconf-3350300.tar.gz
251 -
252 -**Step 3:** Generate the makefile
193 + Step3:Generate the makefile
253 253   cd sqlite-autoconf-3350300/;./configure
254 -
255 -**Step 4:** Compile makefile
195 + Step4:Compile makefile
256 256   sudo make
257 -
258 -**Step 5:** Install makefile
197 + Step5:Install makefile
259 259   sudo make install
260 -
261 -**Check:**
262 - cd /usr/local/bin;ls -al  ~-~->    Check to see if there is a file for sqlite3
263 - cd sqlite-autoconf-3350300/;./sqlite3 test.db        ~-~->    Test whether the sqlite3 was installed successfully
264 -
265 -**debug:**
199 + Check:
200 + cd /usr/local/bin;ls -al --> Check to see if there is a file for sqlite3
201 + cd sqlite-autoconf-3350300/;./sqlite3 test.db --> Test whether the sqlite3 was installed successfully
202 + debug:
266 266   If you get the imformation that is SQLite header and source version mismatch, when you execute./sqlite3 test.db.
267 267   Please execute the command /sbin/ldconfig.
268 268   After that execute the command ./sqlite3 test.db again.
269 -)))
270 -
271 -
272 -
273 -==== (% style="color:blue" %)**Step 2 :  Install and run the RSS service**(%%) ====
274 -
275 -
276 -**1). ** install database for /var/rsshdb.sqlite3 and Server development port for 3721(The default is 3721)
277 -
278 -user must enter the root account and run the following commands
279 -
280 -(% class="box infomessage" %)
281 -(((
282 -$ ./create_sqlite3_db.sh
283 -$ ./rssh_serv -p  3721 2>&1 &
284 -$ ps -ef | grep rssh_serv check 3721 port
285 -)))
286 -
287 -[[image:image-20220531151958-10.png]]
288 -
289 -
290 -**Debug:**
291 -
292 -{{{ Check /var/rsshdb.sqlite3 --> ls /var/rsshdb.sqlite3
293 - Check ls /var/rsshdb.sqlite3 --> sudo chmod 777 rssh_serv
294 294  }}}
295 295  
296 -{{{ if fail to open dpvlry or to bind to it
297 - please kill rssh_serv,and run ./rssh_serv -p 3721 2>&1 & again
298 -}}}
299 299  
300 -
301 -
302 -==== (% style="color:blue" %)**Step 3 :  Create a minimal SSH user (reverse SSH proxy for the gateway)**(%%) ====
303 -
304 -
305 -(% class="box infomessage" %)
306 -(((
307 -**1):**  sudo useradd XXXXX (custom user name)
308 -**2):**  sudo passwd xxxxxx
309 -**3):**  cp /bin/bash /bin/rbash
310 -**4):**  sudo nano /etc/passwd ~-~-> Change /bin/bash to /bin/rbash
311 -**5):**  sudo nano /home/xxxxx/.bashrc **empty it,and input export PATH=$HOME/bin**
312 -**6):**  sudo nano /home/xxxxx/.bash_profile **empty it,and input export PATH=$HOME/bin**
313 -)))
314 -
315 -(% style="color:red" %)**Now user "XXXXX" is the user with limited permissions of the current system**
316 -
317 -
318 -
319 -==== (% style="color:blue" %)**Step 4 :  Create an authorization key file**(%%) ====
320 -
321 -
322 -**1):**  sudo mkdir /home/xxxxx/.ssh; sudo touch /home/xxxxx/.ssh/authorizedkey
323 -
324 -**Debug:**
325 -
326 -{{{ check: sudo ls /home/xxxxx/.ssh/authorizedkey}}}
327 -
328 -
329 -
330 -=== **2.2.3  How does user get the gateway to connect to a user's private server** ===
331 -
332 -
333 -
334 -==== (% style="color:blue" %)**Step 1 :  Come back the gateway web UI to get the gateway Public key**(%%) ====
335 -
336 -
337 -**1)**  in the system ~-~-> (% style="color:#037691" %)**Remote Mgmt/span**
338 -
339 -[[image:image-20220531152419-11.png]]
340 -
341 -
342 -
343 -==== (% style="color:blue" %)**Step 2 :  Authorization server**(%%) ====
344 -
345 -
346 -Input the Gateway Publickey into user's private server "/home/XXXXX/.ssh/authorized_keys" file.
347 -
348 -[[image:image-20220531152549-12.png]]
349 -
350 -
351 -
352 -==== (% style="color:blue" %)**Step 3 :  Connect private server**(%%) ====
353 -
354 -
355 -This is same as connect Dragino Support Server but just change the server address to customize server address.
356 -
357 -[[image:image-20220531152633-13.png]]
358 -
359 -
360 -
361 -==== (% style="color:blue" %)**Step 4 :  Check Connection**(%%) ====
362 -
363 -
364 -Rssh Host connection Ok
365 -
366 -[[image:image-20220531152815-14.png]]
367 -
368 -
369 -User can use common ps | grep ssh to check it in the gateway.
370 -
371 -[[image:image-20220531152840-15.png]]
372 -
373 -
374 -
375 -==== (% style="color:blue" %)**Step 5 :  Access the gateway from customized server**(%%) ====
376 -
377 -
378 -Check what gateways link to server.
379 -
380 -(% class="box infomessage" %)
381 -(((
382 -**$ ./connect-gw.sh -l**
383 -)))
384 -
385 -[[image:image-20220531153016-16.png]]
386 -
387 -
388 -
389 -Access the gateway
390 -
391 -(% class="box infomessage" %)
392 -(((
393 -**$ ./connect-gw.sh <GWID>**
394 -)))
395 -
396 -[[image:image-20220531153219-17.png]]
397 -
398 398  
image-20220531144606-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -59.0 KB
Content
image-20220531145559-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -118.5 KB
Content
image-20220531150151-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -52.5 KB
Content
image-20220531150338-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -40.3 KB
Content
image-20220531150750-5.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -13.3 KB
Content
image-20220531150811-6.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -29.7 KB
Content
image-20220531151516-7.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -9.9 KB
Content
image-20220531151628-8.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -11.7 KB
Content
image-20220531151858-9.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -8.4 KB
Content
image-20220531151958-10.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -8.5 KB
Content
image-20220531152419-11.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -79.6 KB
Content
image-20220531152549-12.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -30.6 KB
Content
image-20220531152633-13.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -66.7 KB
Content
image-20220531152815-14.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -22.5 KB
Content
image-20220531152840-15.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -13.6 KB
Content
image-20220531153016-16.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -9.3 KB
Content
image-20220531153219-17.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -28.8 KB
Content
image-20220531155018-18.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -45.3 KB
Content
image-20220725113010-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Kilight
Size
... ... @@ -1,1 +1,0 @@
1 -58.9 KB
Content
image-20220725115720-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Kilight
Size
... ... @@ -1,1 +1,0 @@
1 -81.7 KB
Content
image-20220725134300-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Kilight
Size
... ... @@ -1,1 +1,0 @@
1 -53.5 KB
Content