Sergey Lyubka
a1ec179229
Use uint64_t for uptime in millis, not int64_t
2022-04-07 13:50:25 +01:00
Sergey Lyubka
0ed64707f3
Introduce MG_ENABLE_CUSTOM_MILLIS
2022-04-04 18:14:59 +01:00
Sergey Lyubka
4474ada291
Fix #1505 : let mg_wakeup() return status
2022-04-03 00:17:31 +01:00
Sergey Lyubka
c650fdcdfc
Move mg_listen() to net.c
2022-02-23 03:06:02 +00:00
Sergey Lyubka
e99973d4b7
Introduce local address
2022-02-22 22:00:55 +00:00
Sergey Lyubka
048fee5c88
Fix build after mg_connect() move
2022-02-22 21:35:03 +00:00
Sergey Lyubka
c579b73f75
Update docs
2022-02-19 15:31:22 +00:00
Sergey Lyubka
e69ec148cc
Better mbedtls debug
2022-02-19 13:46:07 +00:00
Sergey Lyubka
5bc164de76
Remove MG_ENABLE_DIRLIST
2022-02-14 11:19:24 +00:00
Sergey Lyubka
da72dafbfb
Fix #1462 - add helper function for getting HTTP response status code.
2022-02-12 16:51:37 +00:00
Sergey Lyubka
313ac34e59
Handle minus in the fmt spec
2022-02-11 11:02:06 +00:00
Sergey Lyubka
54f75889fa
Using mg_snprintf() everywhere
2022-02-10 17:11:03 +00:00
Sergey Lyubka
9e634310b4
Use MG_EV_HTTP_CHUNK for streaming upload
2022-02-09 12:24:06 +00:00
Sergey Lyubka
b2ee9cb363
Update docs
2022-01-29 11:12:31 +00:00
Sergey Lyubka
e9c20ad992
Update docs
2022-01-29 11:11:22 +00:00
Sergey Lyubka
63b880e624
Handle #1459 - deprecate mg_globmatch, introduce mg_match()
2022-01-29 11:03:54 +00:00
Sergey Lyubka
226917e1cd
Use mg_str, not pointers, in mg_mqtt_{sub,pub}
2022-01-19 09:57:27 +00:00
Sergey Lyubka
fe813ee247
Add buf,len params to mg_mgr_wakeup()
2022-01-19 09:25:01 +00:00
Sergey Lyubka
56a7438114
Add fs arg to mg_file* and mg_http_upload API
2022-01-18 17:11:02 +00:00
Sergey Lyubka
1df102ab93
Add Fat FS support
2022-01-18 07:44:30 +00:00
Sergey Lyubka
fc3c08e411
Change mg_straddr() API
2022-01-05 19:09:11 +00:00
Sergey Lyubka
a176b8d566
Upate docs w.r.t. mg_mqtt_opts
2021-12-23 11:12:10 +00:00
Sergey Lyubka
e9fc3fcecf
Update event enum
2021-12-21 22:20:42 +00:00
Sergey Lyubka
ae6767b1d2
Use int64_t for timers and mg_millis()
2021-12-21 21:50:18 +00:00
Sergey Lyubka
2a3492766f
Remove mg_time() and mg_usleep()
2021-12-21 17:44:34 +00:00
Sergey Lyubka
574c2954b3
Docs nitpick
2021-12-19 10:53:17 +00:00
Sergey Lyubka
755bf3c412
Split TLS files and introduce MG_ENABLE_CUSTOM_TLS
2021-12-14 12:42:41 +00:00
Sergey Lyubka
f2df6c114d
Example for mg_http_bauth
2021-12-13 15:14:29 +00:00
Sergey Lyubka
226404d39c
Example for mg_http_bauth
2021-12-13 15:08:05 +00:00
Sergey Lyubka
0b209eaabb
Add mg_http_get_header_var()
2021-12-03 09:54:03 +00:00
Sergey Lyubka
013520b0c0
Add note for mg_http_serve_dir()
2021-11-25 12:29:45 +00:00
Sergey Lyubka
08444e3942
Fix links and typos
2021-11-16 12:30:40 +00:00
Sergey Lyubka
9c41a0cd26
Fix links
2021-11-16 09:54:36 +00:00
Sergey Lyubka
90c67e4226
Reformatting for better readability
2021-11-06 11:29:56 +00:00
Sergey Lyubka
eba688e11b
Update docs
2021-11-04 23:07:47 +00:00
Panagiotis Tsolakos
383653d608
mbedtls CRL support
...
Certificate revocation checking when using mbedtls
2021-10-14 17:56:31 +02:00
tophatgeeks
6b1ff37cf3
Update README.md
...
I have gone through and edited for consistency, punctuation, wording, and grammar. If you have questions feel free to reach out. I fixed some spelling errors "if" instead of "is" "update" instead of "updatw", etc.
-Jordan Ramsey
2021-09-23 12:07:00 -04:00
Sergey Lyubka
ad3655fb92
Docs spelling
2021-09-22 11:51:16 +01:00
Sergey Lyubka
90a131bd29
Include ipv6 wrapping brackets [] in the result of mg_url_host()
2021-09-21 08:10:27 +01:00
Sergey Lyubka
2139fbc4b7
Support multiple web roots
2021-09-20 12:24:44 +01:00
Sergey Lyubka
9d1e61de93
Update docs
2021-09-17 15:59:15 +01:00
Alex Alashkin
eb94704d8d
Add params and retvals
2021-09-15 22:18:44 +03:00
Sergey Lyubka
f3eb466af3
Update docs
2021-09-15 07:43:24 +01:00
Sergey Lyubka
5bf5516b29
struct iobuf doc
2021-08-30 13:06:45 +01:00
Sergey Lyubka
167af7f160
docs update
2021-08-28 20:27:55 +01:00
Sergey Lyubka
7d91885413
Update docs
2021-08-28 11:16:45 +01:00
Sergey Lyubka
0de83157dc
Update docs
2021-08-28 08:52:41 +01:00
Sergey Lyubka
cc9639b3cb
Update docs
2021-08-28 08:48:47 +01:00
Sergey Lyubka
cb0ac1868f
Update docs
2021-08-28 08:46:01 +01:00
Sergey Lyubka
f3d15a0440
Update docs
2021-08-28 08:25:31 +01:00
Sergey Lyubka
0bc736d384
Update docs
2021-08-28 08:23:33 +01:00
Sergey Lyubka
3bf7b817f6
Update docs
2021-08-28 08:21:29 +01:00
Sergey Lyubka
477e48bf54
mg_iobuf_append -> mg_iobuf_add
2021-08-28 08:08:54 +01:00
Sergey Lyubka
913e730ec2
mg_iobuf_delete -> mg_iobuf_del
2021-08-28 07:16:38 +01:00
Sergey Lyubka
bd64043377
mg_comma -> mg_commalist
2021-08-28 06:54:56 +01:00
Sergey Lyubka
7ba6fda236
Add stm32-nucleo-h743z and stm32-nucleo-f429z
2021-08-26 11:40:47 +01:00
Sergey Lyubka
fc9c454518
Add mg_check_ip_acl()
2021-08-25 07:59:31 +01:00
Sergey Lyubka
1c456fc2df
mg_next_comma_entry -> mg_comma
2021-08-23 16:54:58 +01:00
Sergey Lyubka
07568a8f06
Docs nits
2021-08-22 10:51:40 +01:00
Sergey Lyubka
71e9019211
Docs nitpicks
2021-08-20 20:31:32 +01:00
Sergey Lyubka
6c42350fcf
docs
2021-08-12 12:24:28 +01:00
Sergey Lyubka
104c4fab19
More docs
2021-08-11 19:24:33 +01:00
Sergey Lyubka
fd5eb2d3f9
Refactor mg_mkpipe()
2021-08-11 19:17:04 +01:00
Sergey Lyubka
b739aa89f1
Update readme
2021-08-09 09:43:21 +01:00
Sergey Lyubka
b7ce8213d7
Better multithreading support: remove mg_socketpair, add mg_mkpipe() and mg_rmpipe()
2021-08-07 17:22:47 +01:00
Sergey Lyubka
86f43cd8d6
Refactor mg_socketpair and document MG_ENABLE_NATIVE_SOCKETPAIR
2021-08-06 10:23:08 +01:00
Sergey Lyubka
3a46055e52
Better packed test
2021-07-30 13:19:20 +01:00
Sergey Lyubka
c2176f969b
Implement FS virtualization
2021-07-29 14:21:20 +01:00
Sergey Lyubka
2a2c17a232
Remove MG_ENABLE_STDIO and cleanup
2021-07-24 03:44:00 +01:00
Sergey Lyubka
328a87b02a
Remove mg_file_size()
2021-07-23 20:18:34 +01:00
Sergey Lyubka
529faa1172
MG_ENABLE_FS -> MG_ENABLE_STDIO
2021-07-23 19:47:26 +01:00
Sergey Lyubka
497b8027f5
Fix #1314 - expose local port for listeners
2021-07-19 08:47:38 +01:00
cpq
3deafaea7f
Extend mg_mqtt_{pub,sub} by adding qos and retain
2021-06-10 19:27:19 +01:00
cpq
a15d518571
Add mg_mqtt_pubex
2021-06-10 19:15:50 +01:00
cpq
c0a8546330
Add MG_ARCH_FREERTOS_LWIP
2021-05-28 23:49:26 +01:00
cpq
736b8ad7b7
Fix #1285 - __builtin___snprintf_chk warning. Tighten test flags and refactor the code to squash all warnings
2021-05-28 18:30:42 +01:00
cpq
1a5e3d3151
Fix #1286
2021-05-19 00:19:21 +01:00
cpq
47e5e984df
stm32f7 example starts on real h/w, with plus-TCP driver
2021-05-17 17:36:57 +01:00
cpq
7b39973065
docs
2021-05-12 11:44:15 +01:00
cpq
30b64483fd
docs
2021-05-12 11:39:46 +01:00
Sergey Lyubka
946e07644c
Merge pull request #1275 from panosto/master
...
Corrected small typo in docs
2021-04-29 19:26:46 +01:00
Panagiotis
497b26a249
Corrected small typo in docs
2021-04-29 18:16:33 +02:00
cpq
31c9e3fb7e
Make mg_random() weak, see #1269
2021-04-29 09:09:21 +01:00
cpq
4dbb2da78f
Add form-upload example
2021-03-17 13:28:36 +00:00
cpq
5bd22cb5e4
Add mg_http_next_multipart()
2021-03-17 07:43:29 +00:00
cpq
5326e8d212
Update docs
2021-03-15 09:18:02 +00:00
novlean
91ed6de166
Fixed typos
2021-03-11 13:01:45 +00:00
cpq
6366c832b0
Add struct mg_http_serve_opts::extra_headers
2021-03-10 07:56:14 +00:00
cpq
f326cbedbe
Fix doc example
2021-03-09 17:44:15 +00:00
cpq
452bcc68a4
Add mg_mqtt_next_unsub() signature
2021-03-09 11:29:53 +00:00
cpq
1b5cc341a5
Add streaming client support, MG_EV_HTTP_CHUNK
2021-03-08 15:41:16 +00:00
Christopher Simons
421bc126b5
README.md: fix typo: is_drainig -> is_draining
2021-02-02 22:17:15 -05:00
cpq
d327ee9834
Improve SNI
2021-01-30 13:03:11 +00:00
cpq
86b1053678
Add error check for iobuf allocation
2021-01-29 12:32:34 +00:00
cpq
3c851bcfc3
mg_file_write -> mg_file_printf
2021-01-26 16:30:44 +00:00
wangtun
960d3c7880
Fix README.md mg_mgr_free
2021-01-23 15:49:55 +08:00
cpq
be62ac9c14
Add more docs
2021-01-20 11:28:47 +00:00
Sergey Lyubka
30d86928d5
Merge pull request #1191 from RiccardoDalFiume/master
...
FIX README mg_http_serve*
2021-01-17 11:18:32 +00:00
cpq
12c32d09fb
Pass mg_http_message to MG_EV_WS_OPEN
2021-01-17 11:16:19 +00:00
cpq
ae6fd6aa35
Add extra headers param to mg_ws_upgrade()
2021-01-16 22:48:43 +00:00
Riccardo Dal Fiume
7beff0201d
FIX README mg_http_serve*
2021-01-12 11:28:41 +01:00
cpq
a4c9d1ecb7
Update mg_http_serve_file() doc
2021-01-07 16:21:01 +00:00
cpq
b7a79a556a
Add extra headers param to mg_http_serve_file
2021-01-07 12:48:20 +00:00
cpq
c7e09bd7b4
Add SSI include file=, include virtual=
2021-01-02 17:57:51 +00:00
cpq
29534218d7
IPv6 related refactoring
2020-12-20 16:55:33 +00:00
cpq
82a378e519
Add extra param to http_reply()
2020-12-17 22:47:55 +00:00
cpq
2252a74cd7
Note on UDP
2020-12-17 11:19:13 +00:00
cpq
1252a61479
More docs
2020-12-14 09:36:46 +00:00
cpq
5f631c0b96
More docs
2020-12-14 09:35:03 +00:00
cpq
7ce9cdf0b9
More docs
2020-12-14 09:31:03 +00:00
cpq
6c4b5efd98
Add restful and client example
2020-12-10 13:26:05 +00:00
cpq
05a43c563c
Update READMEs
2020-12-08 16:53:35 +00:00
cpq
94d2e86b60
More docs
2020-12-08 16:26:17 +00:00
cpq
47b6060910
Add docs
2020-12-06 21:12:05 +00:00
cpq
f2fba1d200
7.0 refactor
2020-12-05 11:26:32 +00:00
Sergey Lyubka
f778d22eac
Make it possible to override default FS update algorithm
...
PUBLISHED_FROM=774a111548da97bd9d195e177b5fb66b0fd66135
2020-06-11 18:27:48 +01:00
Sergey Lyubka
3aa76dcaec
Subst CREDPARAMS
...
PUBLISHED_FROM=545e8dff4ea0bef061c893252c613e3429f56184
2020-06-11 18:27:46 +01:00
Deomid "rojer" Ryabkov
95fcb261eb
Fix processing of keep-alive requests when chunks are consumed
...
PUBLISHED_FROM=136ce2ed4f143d7ee246e5fd1078c431e205bb3a
2020-05-22 23:07:38 +00:00
Deomid "rojer" Ryabkov
1bf3ad2426
MQTT ping fixes
...
* Actually drop the connection when no response to ping arrives within the next interval.
* Avoid sending immediate ping when wall time is adjusted, it's usually spurious.
PUBLISHED_FROM=8049280b58edfb94dd0fcb6a1e89ffefe69bcea1
2020-02-11 08:04:02 +00:00
Deomid "rojer" Ryabkov
7153690016
Keep the size of the structure the same in non-SSL build
...
PUBLISHED_FROM=8f93bee72bc18efff64354203ee6268f4f8e8768
2020-01-31 11:01:35 +00:00
Deomid "rojer" Ryabkov
f00b3a2b3a
Move ssl_if_data to the end of mg_connection
...
PUBLISHED_FROM=4fb65477b03bedc3206ac286e8236f0f9536f20e
2020-01-31 09:48:30 +00:00
Deomid Ryabkov
1e9fabe1ca
Fix handling of WS handshake error response
...
Check response code, make sure it's 101.
Pass http_message to the client to keep it appraised.
This represents a slight change in the API -
in case of an error MG_EV_WEBSOCKET_HANDSHAKE_DONE will now be delivered where previosuly connection would just hang.
Clients that do not examine the argument may for a moment think handshake has succeeded but in fact connection will be closed immediately.
CL: mg: Fix handling of WS handshake error response
PUBLISHED_FROM=645a43d9e5bee216e54411f85827c9b974e9a7d1
2019-02-14 21:19:34 +00:00
Deomid Ryabkov
e2dfac946d
Ensure that user sees all the data before connection is closed
...
If user throttles receive by setting recv_mbuf_limit,
after the net interface reports connection as closed we must wait
for data to trickle through before disposing of it.
There can still b data in the buffers (e.g. SSL).
CL: mg: Ensure that user sees all the data before connection is closed
PUBLISHED_FROM=22be0fa368950a9fdb03cfb00febc7c0a1674b01
2018-12-10 21:04:49 +00:00
Бобби
c198d2e5f1
Make MG_CTL_MSG_MESSAGE_SIZE overridable
...
CL: Make MG_CTL_MSG_MESSAGE_SIZE overridable
Fix https://github.com/cesanta/mongoose/pull/987
PUBLISHED_FROM=b0a7c67297b98f616c9eadcd3c34b8747939c918
2018-12-07 10:04:00 +00:00
Deomid Ryabkov
9a70abef24
Add mbuf_append_and_free() and mbuf_move()
...
CL: Add mbuf_append_and_free() and mbuf_move()
PUBLISHED_FROM=bdf73906dd93b2ebeace160596508e15480b54b4
2018-12-05 21:49:01 +00:00
Deomid Ryabkov
53e1c469a2
Add ability for multipart data handler to provide pushback
...
It can specify how much data was actually processed and the rest will be re-delivered on next poll.
CL: mg: Add ability for multipart data handler to provide pushback
PUBLISHED_FROM=e0168c5064c3a32921c9209bc09f4da2079cd616
2018-12-05 16:02:56 +00:00
Deomid Ryabkov
15b361fbac
Add mbuf_clear()
...
PUBLISHED_FROM=754b98b3000b24ad3b3d9cc0b4c480ca005a1c3f
2018-11-23 15:50:55 +00:00
Sergey Lyubka
1adea37c45
Integrate https://github.com/cesanta/mongoose/pull/667 , fix documentation
...
CL: Integrate https://github.com/cesanta/mongoose/pull/667 , fix documentation
PUBLISHED_FROM=80a939fc3276b89c29716e7373f674dba86769ee
2018-09-20 15:34:36 +00:00
Sergey Lyubka
291fc024cd
Docs nits
...
CL: Docs nits
PUBLISHED_FROM=1a2fc8080d94673acf300c6f07aba3a1e6272295
2018-09-14 08:03:58 +00:00
Deomid Ryabkov
421e099f2b
Refactor mg polling
...
* Change return type of mg_mgr_poll to return number of events
* Add mg_mgr_min_timer
* Refactor main poll loop to remove LwIP-specific stuff
CL: Refactor mg polling
PUBLISHED_FROM=dc94618b32fa3c84a2f053bd04d134297780ec82
2018-09-06 06:34:18 +00:00
Deomid Ryabkov
e89be2e944
Add mg_url_encode_opt()
...
CL: Add `mg_url_encode_opt()` - a parametrized version of `mg_url_encode()`
PUBLISHED_FROM=17fa57a7a5325b51b6e3aef3855eac4e82c35782
2018-04-10 11:04:31 +00:00
Dmitry Frank
b9b20c6494
Implement mg_http_parse_header2()
...
Which is a replacement of (deprecated) `mg_http_parse_header`, but,
similarly to `asprintf`, allocates a new buffer if the client-provided
one is not large enough.
Also use it throughout mongoose code, and thus some header-related
limitations are removed; in particular,
https://github.com/cesanta/mongoose/issues/813 is fixed.
CL: Mongoose Web Server: Deprecate `mg_http_parse_header()` and implement `mg_http_parse_header2()` instead, which allocates a new buffer if the client-provided one is not large enough (similarly to `asprintf`).
CL: Mongoose Web Server: Fix limitations of header value lengths, e.g. when parsing authentication headers such as nonce, etc.
PUBLISHED_FROM=c75b1bbbbdb294ea85075ce69b1368f115fdd1ef
2018-02-07 23:04:29 +00:00
Dmitry Frank
3eb4eb8074
Fix mongoose docs generation
...
PUBLISHED_FROM=331821dcd1f7dc8a94581cd8a9b51aa00a89fddc
2018-02-03 01:20:48 +02:00
Dmitry Frank
aba60dadec
Add mg_ prefix to mongoose sources
...
CL: none
PUBLISHED_FROM=d6ebe5fa88c61ae3b8569897d9b09d54610bec73
2018-02-03 01:20:47 +02:00
Dmitry Frank
f29457e967
Remove tunneling from mongoose
...
CL: Mongoose Web Server: Remove tunneling functionality which was used by nobody
PUBLISHED_FROM=38b9e8ae7b0a5a1dbba5cff4074843dc681267d3
2018-02-02 21:50:13 +00:00
Dmitry Frank
47abc641f1
Fix nonce in digest authentication
...
CL: Mongoose Web Server: Digest authentication: Fix nonce validity check (expired nonce or nonce from the future did not cause the the check to fail)
CL: Mongoose Web Server: Digest authentication: Fix nonce request value; it worked before because nonce validity check was broken as well
CL: Mongoose Web Server: Digest authentication: Add `nonce` argument to `mg_http_create_digest_auth_header()`: clients should use the value received from the server's authentication request.
Resolves https://github.com/cesanta/mongoose/issues/809
PUBLISHED_FROM=5e59f90ed6b2a4311ed6763159da81c2aaf6af4c
2018-02-01 22:05:43 +00:00
Dmitry Frank
7519b2ef3a
Improve websocket implementation
...
CL: Mongoose Web Server: Websocket: Respond to Ping with Pong
CL: Mongoose Web Server: Websocket: Properly close a connection with Close frame (in response to a client's close and when protocol failure is detected)
CL: Mongoose Web Server: Websocket: Fix support of fragmented messages
CL: Mongoose Web Server: Websocket: Add support for control frames interjected in the middle of a fragmented message
PUBLISHED_FROM=e2b3794aaacc64633540c493194cccc62afa2077
2018-02-01 13:20:19 +00:00
Dmitry Frank
ddd35c0cba
Fail if authn file is configured but doesn't exist
...
PUBLISHED_FROM=2c176091ffb6c7c5cfe8ea4f05b6109e00b33383
2017-11-28 19:35:22 +00:00
Dmitry Frank
9ab6d084df
Expose digest auth checking functions
...
PUBLISHED_FROM=1bfc6e332f56b68eb6155bb729a97a0d8d5a316c
2017-11-28 10:05:36 +00:00
Бобби
6e3e5560d0
Move mongoose docs to https://cesanta.com/docs/
...
PUBLISHED_FROM=ebf5568abe82952ab2751298185a10189098013f
2017-10-16 15:18:24 +00:00
Dmitry Frank
d4b55c4ceb
Separate digest auth from HTTP headers parsing
...
PUBLISHED_FROM=f97569ae2f31ab94ce4875eae4d0a198f719c388
2017-08-22 19:51:53 +00:00
Deomid Ryabkov
0fba87c755
Make mg_url_encode public
...
Change the API to heap-allocate the string and get rid of a bunch of fat stack buffers.
PUBLISHED_FROM=c793dc64a9a044a9769d92ea16859f5d704a2181
2017-07-21 12:06:52 +00:00
Sergey Lyubka
944a6b761c
Fix https://github.com/cesanta/mongoose/pull/824
...
PUBLISHED_FROM=ed2c39b9e00a7374af7fed5af0c9acd6c330334a
2017-07-17 14:28:35 +00:00
Sergey Lyubka
f1ae183752
Fix https://github.com/cesanta/mongoose/pull/829
...
PUBLISHED_FROM=6e56c250fe62010e25b6ed489c0d608163ba629c
2017-07-17 14:28:34 +00:00
Dmitry Frank
3e59e1c465
Fix formatting
...
PUBLISHED_FROM=1803e726eee7bb64496d70389655083eb70257ab
2017-07-02 20:05:53 +00:00
Sergey Lyubka
ae611a6e55
Clean up v7 from mongoose
...
PUBLISHED_FROM=efa9cc3aaf0c5ae8841e029370f882b615cebf1b
2017-07-01 08:51:09 +00:00
Sergey Lyubka
244e5f67d3
Commonize pattern matching functions
...
PUBLISHED_FROM=e69e298a51dbe0f9c47184169ecad06eef0676fc
2017-06-28 18:35:37 +00:00
Sergey Lyubka
8d76733fad
Make mg_conn_addr_to_str return len
...
Also amend api_net.js to use returned length.
PUBLISHED_FROM=38e15f9587edf28049c5b9e5f126b4db159910e8
2017-06-26 21:02:02 +00:00
Deomid Ryabkov
023b55f2e5
MQTT client keep alive fixes
...
- Move keep alive management up to the Mongoose library
- Only outgoing control messgaes should reset keepalive timer
- Add unit test
https://forum.mongoose-os.com/discussion/1155/mqtt-keep-alive-compliance-issue
PUBLISHED_FROM=f86e30744ded53a6f7f96afec066b4ff3b4372c0
2017-06-04 21:50:23 +00:00
Sergey Lyubka
cfe77a3d58
Move struct http_message::body
...
Rationale: this is the optimisation to make JS FFI-ed API
work nicer. We don't have strucuture introspection now,
and do not generate offsets automatially. Thus, using a
stable well-known location of the parsed message body is
better, in case of number of HTTP headers macro changes.
PUBLISHED_FROM=55bf25ac77060a9c81dfecd6601f037562530801
2017-05-06 11:26:53 +00:00