annotate mod_admin_web/admin_web/www_files/index.html @ 6257:fa45ae704b79

mod_cloud_notify: Update Readme diff --git a/mod_cloud_notify/README.md b/mod_cloud_notify/README.md --- a/mod_cloud_notify/README.md +++ b/mod_cloud_notify/README.md @@ -1,109 +1,106 @@ ---- -labels: -- 'Stage-Beta' -summary: 'XEP-0357: Cloud push notifications' ---- +# Introduction -Introduction -============ +This module enables support for sending "push notifications" to clients +that need it, typically those running on certain mobile devices. -This module enables support for sending "push notifications" to clients that -need it, typically those running on certain mobile devices. +As well as this module, your client must support push notifications (the +apps that need it generally do, of course) and the app developer's push +gateway must be reachable from your Prosody server (this happens over a +normal XMPP server-to-server 's2s' connection). -As well as this module, your client must support push notifications (the apps -that need it generally do, of course) and the app developer's push gateway -must be reachable from your Prosody server (this happens over a normal XMPP -server-to-server 's2s' connection). - -Details -======= +# Details Some platforms, notably Apple's iOS and many versions of Android, impose -limits that prevent applications from running or accessing the network in the -background. This makes it difficult or impossible for an XMPP application to -remain reliably connected to a server to receive messages. - -In order for messaging and other apps to receive notifications, the OS vendors -run proprietary servers that their OS maintains a permanent connection to in -the background. Then they provide APIs to application developers that allow -sending notifications to specific devices via those servers. +limits that prevent applications from running or accessing the network +in the background. This makes it difficult or impossible for an XMPP +application to remain reliably connected to a server to receive +messages. -When you connect to your server with an app that requires push notifications, -it will use this module to set up a "push registration". When you receive -a message but your device is not connected to the server, this module will -generate a notification and send it to the push gateway operated by your -application's developers). Their gateway will then connect to your device's -OS vendor and ask them to forward the notification to your device. When your -device receives the notification, it will display it or wake up the app so it -can connect to XMPP and receive any pending messages. +In order for messaging and other apps to receive notifications, the OS +vendors run proprietary servers that their OS maintains a permanent +connection to in the background. Then they provide APIs to application +developers that allow sending notifications to specific devices via +those servers. -This protocol is described for developers in [XEP-0357: Push Notifications]. +When you connect to your server with an app that requires push +notifications, it will use this module to set up a "push registration". +When you receive a message but your device is not connected to the +server, this module will generate a notification and send it to the push +gateway operated by your application's developers). Their gateway will +then connect to your device's OS vendor and ask them to forward the +notification to your device. When your device receives the notification, +it will display it or wake up the app so it can connect to XMPP and +receive any pending messages. -For this module to work reliably, you must have [mod_smacks], [mod_mam] and -[mod_carbons] also enabled on your server. +This protocol is described for developers in \[XEP-0357: Push +Notifications\]. + +For this module to work reliably, you must have \[mod_smacks\], +\[mod_mam\] and \[mod_carbons\] also enabled on your server. -Some clients, notably Siskin and Snikket iOS need some additional extensions -that are not currently defined in a standard XEP. To support these clients, -see [mod_cloud_notify_extensions]. +Some clients, notably Siskin and Snikket iOS need some additional +extensions that are not currently defined in a standard XEP. To support +these clients, see \[mod_cloud_notify_extensions\]. -Configuration -============= +# Configuration - Option Default Description - ------------------------------------ ----------------- ------------------------------------------------------------------------------------------------------------------- - `push_notification_important_body` `New Message!` The body text to use when the stanza is important (see above), no message body is sent if this is empty - `push_max_errors` `16` How much persistent push errors are tolerated before notifications for the identifier in question are disabled - `push_max_devices` `5` The number of allowed devices per user (the oldest devices are automatically removed if this threshold is reached) - `push_max_hibernation_timeout` `259200` (72h) Number of seconds to extend the smacks timeout if no push was triggered yet (default: 72 hours) - `push_notification_with_body` (\*) `false` Whether or not to send the real message body to remote pubsub node. Without end-to-end encryption, enabling this may expose your message contents to your client developers and OS vendor. Not recommended. - `push_notification_with_sender` (\*) `false` Whether or not to send the real message sender to remote pubsub node. Enabling this may expose your contacts to your client developers and OS vendor. Not recommended. + Option Default Description + -------------------------------------- ---------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + `push_notification_important_body` `New Message!` The body text to use when the stanza is important (see above), no message body is sent if this is empty + `push_max_errors` `16` How much persistent push errors are tolerated before notifications for the identifier in question are disabled + `push_max_devices` `5` The number of allowed devices per user (the oldest devices are automatically removed if this threshold is reached) + `push_max_hibernation_timeout` `259200` (72h) Number of seconds to extend the smacks timeout if no push was triggered yet (default: 72 hours) + `push_notification_with_body` (\*) `false` Whether or not to send the real message body to remote pubsub node. Without end-to-end encryption, enabling this may expose your message contents to your client developers and OS vendor. Not recommended. + `push_notification_with_sender` (\*) `false` Whether or not to send the real message sender to remote pubsub node. Enabling this may expose your contacts to your client developers and OS vendor. Not recommended. -(\*) There are privacy implications for enabling these options. +(\*) There are privacy implications for enabling these options.[^1] -Internal design notes -===================== +# Internal design notes -App servers are notified about offline messages, messages stored by [mod_mam] -or messages waiting in the smacks queue. -The business rules outlined [here](//mail.jabber.org/pipermail/standards/2016-February/030925.html) are all honored[^2]. +App servers are notified about offline messages, messages stored by +\[mod_mam\] or messages waiting in the smacks queue. The business rules +outlined +[here](//mail.jabber.org/pipermail/standards/2016-February/030925.html) +are all honored[^2]. -To cooperate with [mod_smacks] this module consumes some events: -`smacks-ack-delayed`, `smacks-hibernation-start` and `smacks-hibernation-end`. -These events allow this module to send out notifications for messages received -while the session is hibernated by [mod_smacks] or even when smacks -acknowledgements for messages are delayed by a certain amount of seconds -configurable with the [mod_smacks] setting `smacks_max_ack_delay`. +To cooperate with \[mod_smacks\] this module consumes some events: +`smacks-ack-delayed`, `smacks-hibernation-start` and +`smacks-hibernation-end`. These events allow this module to send out +notifications for messages received while the session is hibernated by +\[mod_smacks\] or even when smacks acknowledgements for messages are +delayed by a certain amount of seconds configurable with the +\[mod_smacks\] setting `smacks_max_ack_delay`. -The `smacks_max_ack_delay` setting allows to send out notifications to clients -which aren't already in smacks hibernation state (because the read timeout or -connection close didn't already happen) but also aren't responding to acknowledgement -request in a timely manner. This setting thus allows conversations to be smoother -under such circumstances. +The `smacks_max_ack_delay` setting allows to send out notifications to +clients which aren't already in smacks hibernation state (because the +read timeout or connection close didn't already happen) but also aren't +responding to acknowledgement request in a timely manner. This setting +thus allows conversations to be smoother under such circumstances. -The new event `cloud-notify-ping` can be used by any module to send out a cloud -notification to either all registered endpoints for the given user or only the endpoints -given in the event data. +The new event `cloud-notify-ping` can be used by any module to send out +a cloud notification to either all registered endpoints for the given +user or only the endpoints given in the event data. -The config setting `push_notification_important_body` can be used to specify an alternative -body text to send to the remote pubsub node if the stanza is encrypted or has a body. -This way the real contents of the message aren't revealed to the push appserver but it -can still see that the push is important. -This is used by Chatsecure on iOS to send out high priority pushes in those cases for example. +The config setting `push_notification_important_body` can be used to +specify an alternative body text to send to the remote pubsub node if +the stanza is encrypted or has a body. This way the real contents of the +message aren't revealed to the push appserver but it can still see that +the push is important. This is used by Chatsecure on iOS to send out +high priority pushes in those cases for example. -Compatibility -============= - -**Note:** This module should be used with Lua 5.2 and higher. Using it with -Lua 5.1 may cause push notifications to not be sent to some clients. +# Compatibility ------- ----------------------------------------------------------------------------- - trunk Works - 0.12 Works - 0.11 Works - 0.10 Works - 0.9 Support dropped, use last supported version [675726ab06d3](//hg.prosody.im/prosody-modules/raw-file/675726ab06d3/mod_cloud_notify/mod_cloud_notify.lua) ------- ----------------------------------------------------------------------------- +**Note:** This module should be used with Lua 5.2 and higher. Using it +with Lua 5.1 may cause push notifications to not be sent to some +clients. + ------- ----------------------------------------------------------------- + trunk Works as of 25-06-13 + 13 Works + 0.12 Works + ------- ----------------------------------------------------------------- -[^1]: The service which is expected to forward notifications to something like Google Cloud Messaging or Apple Notification Service -[^2]: [business_rules.markdown](//hg.prosody.im/prosody-modules/file/tip/mod_cloud_notify/business_rules.markdown) +[^1]: The service which is expected to forward notifications to + something like Google Cloud Messaging or Apple Notification Service + +[^2]: [business_rules.md](//hg.prosody.im/prosody-modules/file/tip/mod_cloud_notify/business_rules.md)
author Menel <menel@snikket.de>
date Fri, 13 Jun 2025 10:36:52 +0200
parents b3e2ed890b93
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
1 <?xml version="1.0" encoding="utf-8" ?>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
3 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
4 <html xmlns="http://www.w3.org/1999/xhtml">
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
5 <head>
296
d49702971a5e mod_admin_web: Change page title
Florian Zeitz <florob@babelmonkeys.de>
parents: 294
diff changeset
6 <title>Prosody Webadmin</title>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
7 <link rel="stylesheet" type="text/css" href="css/bootstrap-1.4.0.min.css" />
570
390d995bedcf mod_admin_web: Move style.css to css/
Matthew Wild <mwild1@gmail.com>
parents: 569
diff changeset
8 <link rel="stylesheet" type="text/css" href="css/style.css" />
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
9 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
1217
b3e2ed890b93 mod_admin_web: Bump jquery version
Florian Zeitz <florob@babelmonkeys.de>
parents: 1023
diff changeset
10 <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
397
7331e2669f24 mod_admin_web: Update dependencies / remove need to build strophe.js (Thanks Zash)
Florian Zeitz <florob@babelmonkeys.de>
parents: 334
diff changeset
11 <script type="text/javascript" src="js/strophe.min.js"></script>
297
a70284e01453 mod_admin_web: Add support for calling adhoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents: 296
diff changeset
12 <script type="text/javascript" src="js/adhoc.js"></script>
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
13 <script type="text/javascript" src="js/main.js"></script>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
14 </head>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
15
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
16 <body>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
17 <div id='top'>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
18 <div id='header'>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
19 <img src="images/prosody.png" alt="Prosody"/>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
20 </div>
297
a70284e01453 mod_admin_web: Add support for calling adhoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents: 296
diff changeset
21 <div id='menu'>
a70284e01453 mod_admin_web: Add support for calling adhoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents: 296
diff changeset
22 <ul>
547
f0ef6e285d69 mod_adhoc_web: fade instead of scrolling
Florian Zeitz <florob@babelmonkeys.de>
parents: 539
diff changeset
23 <li><a id='adhocMenu' href="#adhoc">General</a></li>
f0ef6e285d69 mod_adhoc_web: fade instead of scrolling
Florian Zeitz <florob@babelmonkeys.de>
parents: 539
diff changeset
24 <li><a id='serverMenu' href="#s2sList">Servers</a></li>
f0ef6e285d69 mod_adhoc_web: fade instead of scrolling
Florian Zeitz <florob@babelmonkeys.de>
parents: 539
diff changeset
25 <li><a id='clientMenu' href="#c2sList">Clients</a></li>
575
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
26 <li><span id="selector">Host:&nbsp;<select id="host"></select></span></li>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
27 <li><a href="#" id='logout'>Logout</a></li>
297
a70284e01453 mod_admin_web: Add support for calling adhoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents: 296
diff changeset
28 </ul>
a70284e01453 mod_admin_web: Add support for calling adhoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents: 296
diff changeset
29 </div>
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
30 </div>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
31
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
32 <div id='login'>
575
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
33 <form id='cred' name='cred' class='form-stacked'>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
34 <fieldset>
575
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
35 <div class='clearfix'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
36 <label for='jid'>JID:</label>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
37 <div class='input'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
38 <input type='text' id='jid' />
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
39 </div>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
40 </div>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
41 <div class='clearfix'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
42 <label for='pass'>Password:</label>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
43 <div class='input'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
44 <input type='password' id='pass' />
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
45 </div>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
46 </div>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
47 <div class='clearfix'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
48 <div class='input'>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
49 <input type='submit' id='connect' value='Login' class='btn' />
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
50 </div>
565d5409c6ca Adapt to bootstrap
Florian Zeitz <florob@babelmonkeys.de>
parents: 573
diff changeset
51 </div>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
52 </fieldset>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
53 </form>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
54 </div>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
55
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
56 <div id='main'>
573
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
57 <div id="adhoc">
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
58 <div class="row">
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
59 <div id="adhocCommands" class="span4"></div>
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
60 <div id="adhocDisplay" class="span12"></div>
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
61 </div>
c9955858dc7e mod_adhoc_web: Redesign adhoc command pane
Florian Zeitz <florob@babelmonkeys.de>
parents: 572
diff changeset
62 </div>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
63 <div id="s2sList" class="container">
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
64 <div class="row">
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
65 <div class="span8">
569
69288d001922 mod_admin_web: Fix typo (incomming->incoming)
Matthew Wild <mwild1@gmail.com>
parents: 547
diff changeset
66 <h2>Incoming S2S connections:</h2>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
67 <ul id="s2sin"></ul>
294
5a619d6045a8 mod_admin_web: Prepare for adding more features
Florian Zeitz <florob@babelmonkeys.de>
parents: 288
diff changeset
68 </div>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
69 <div class="span8">
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
70 <h2>Outgoing S2S connections:</h2>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
71 <ul id="s2sout"></ul>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
72 </div>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
73 </div>
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
74 </div>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
75 <div id="c2sList" class="container">
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
76 <div class="row">
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
77 <div class="span16">
539
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
78 <h2>Client connections:</h2>
99465bbfa205 First pass of web-admin redesign
Florian Zeitz <florob@babelmonkeys.de>
parents: 397
diff changeset
79 <ul id="c2s"></ul>
301
b241c79a0eb7 mod_admin_web: Add a live view for C2S connections
Florian Zeitz <florob@babelmonkeys.de>
parents: 298
diff changeset
80 </div>
572
f22a569fcf86 mod_admin_web: Begin switch to using bootstrap styles
Matthew Wild <mwild1@gmail.com>
parents: 570
diff changeset
81 </div>
301
b241c79a0eb7 mod_admin_web: Add a live view for C2S connections
Florian Zeitz <florob@babelmonkeys.de>
parents: 298
diff changeset
82 </div>
288
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
83 </div>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
84
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
85 <div id='log_container'>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
86 <a id='log_toggle' href='#'>Status Log :</a>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
87 <div id='log'></div>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
88 </div>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
89 </body>
9233d7ee3c09 mod_admin_web: Initial PoC commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
90 </html>