News:

Rule #1 - Be Patient - Rule #2 - Don't ask when, if you don't contribute - Rule #3 - You have coding skills - LinuxMCE's small brother is available: http://www.agocontrol.com

Main Menu

News flash

Started by brononius, September 05, 2012, 07:17:42 AM

Previous topic - Next topic

brononius

Maybe a nice feature would be that a LinuxMCE "administrator" could send a kind of news flash that's pushed to all LinuxMCE installation?

Today, when you log in with ssh, you see from time to time update messages. Mostly i do this, but i'm always afraid that i can/will break something with this. For examply the message "New release precise available". I've seen on this forum that this will break the system?! So luckly i've seen the message? But i think that not everyone is looking each time all posts on the forum.

So maybe it would be nice that we can see a message from 'linuxMCE' that this is a bad idea?
This could also be used for mayor updates messages, new features...?

The message could/should appear when you login with ssh.
And maybe also on the admin page, an orbiter... ?

fe after log in with ssh
QuoteLinux dcerouter 2.6.32-42-generic #95-Ubuntu SMP Wed Jul 25 15:57:54 UTC 2012 i686 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to Ubuntu!
* Documentation:  https://help.ubuntu.com/

5 packages can be updated.
5 updates are security updates.

New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.



LinuxMCE messages
----------------------

   - Don't do the 'do-release-upgrade' for the package 'precise'. It will break your system...
     More info on http://forum.linuxmce.org/Topic123456

   - Don't forget to checkup out our new XYorbiter: http://xyorbiter.linuxmce.org


username@dcerouter:~$

Version: linuxMCE 1404, running virtual on ESXi

Orbiters: ASUS eeePAD, Nexus 5, Huwai, web
Automation: EIB technology, KNX IP ROUTER 750
Phones: Cisco 7912-7940-7960
Camera's: Foscam POE

mkbrown69

Just a thought...  It could be implemented as a re-usable component, like a Twitter/XMPP/RSS feed reader...

/Mike

tschak909

ok, cool, awesome. make it, i'm as always in the #linuxmce-devel channel to provide support. :)

-Thom

stedaniels

Something like this would probably do. I've used SVN as the source, the URL is configurable. Twitter doesn't provide the flexibility we'd likely want, and they are getting more closed by the day.


#!/bin/sh -e
#
#    95-lmce-dynamic-motd - display the motd message from LinuxMCE SVN
#                           useful to advise against release upgrades
#
#    Based on the below:
#    91-release-upgrade - display upgrade message or update the cache
#                         in the background
#
#    Originally Copyright (C) 2010 Canonical Ltd.
#
#    Original Authors: Dustin Kirkland <kirkland@canonical.com>
#    Authors: Steve Daniels <ste@stedaniels.co.uk>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

lmce_dynamic_motd_url='http://svn.linuxmce.org/svn/trunk/lmce-dynamic-motd'
lmce_dynamic_motd=''
stamp=/tmp/95-lmce-dynamic-motd
if [ -s "$stamp" ]; then
        # Stamp exists and is populated, so display
        lmce_dynamic_motd=`cat $stamp`
        echo
        echo -e "$lmce_dynamic_motd"
        echo
elif [ -f "$stamp" ]; then
        # Stamp exists, but is empty, see if it's expired
        now=$(date +%s)
        lastrun=$(stat -c %Y "$stamp") 2>/dev/null || lastrun=0
        expiration=$(expr $lastrun + 86400)
        if [ $now -ge $expiration ]; then
                # But is older than 1 day old, so update and output
                lmce_dynamic_motd="`exec wget -q -O - $lmce_dynamic_motd_url`"
                echo
                echo -e "$lmce_dynamic_motd" | tee $stamp
                echo
        fi
else
        # No cache at all, so update and output
        lmce_dynamic_motd="`exec wget -q -O - $lmce_dynamic_motd_url`"
        echo
        echo -e "$lmce_dynamic_motd" | tee $stamp
        echo
fi


The file needs to exist here: /etc/update-motd.d/95-lmce-dynamic-motd
It also needs to be executable: sudo chmod 755 /etc/update-motd.d/95-lmce-dynamic-motd
Obviously the URL "http://svn.linuxmce.org/svn/trunk/lmce-dynamic-motd" needs to be changed to something else, or a file checked in there and maintained. You can even use COLOURS as listed here: https://wiki.archlinux.org/index.php/Color_Bash_Prompt plain text otherwise please.

Can make this a ticket and attach it if needed. Questions and improvements welcome.

Steve

tschak909

I would recommend reading the MessageSend page on the wiki.

You will want to send a message to the Orbiter Plugin, for Display Message. This will do what you want.

You can prototype the message using the web admin advanced>configure>devices, going to the orbiter plugin, selecting send command, and looking for the Display Message command. It will show you the messagesend command it constructs, as you build the message.

-Thom

stedaniels

Hi tschak,

I think I've fulfilled the OP's request for SSH.

I'd imagine there would want to be some discussion over sending messages to the Orbiters and the web admin.

The web admin is easy, because it could just display a banner of some sort. But when you start to think of acknowledging it, setting a database flag perhaps? It starts to get more complicated. Same with MessageSend, you don't want the script running every time someone logs into SSH or every time the cron runs and MessageSend-ing to all the orbiters. There needs to be some kind of acknowledgement flagging. Then there's formatting for colours, font weight, etc. It'd need to be different for each output, console/web/Orbiter.

The script I've written specifically caters for the SSH MOTD. While it could be expanded, I'm more of a KISS kind of guy, that script in that location shouldn't be messing around with other things. It's purpose is just to generate and output an MOTD fragment.

For further discussion, the script looks at a fictional URL http://svn.linuxmce.org/svn/trunk/lmce-dynamic-motd there would need to be a policy governing it's content and update frequency. I pointed at SVN because it has a good audit trail, which I think is important if your going to be sending messages to so many systems. It also means we can use raw files and not have to set up a fancy administration system for the messages.

I forgot to add that my script does have a dependency on wget.

Steve

_if_

that script looks very cool and helpful to me. someone just needs to maintain it.
btw, do we have some sort of release notes where is listed what changes have been checked in and what they are for?

thanks
IF


_if_

ah cool!
it propably doesn't make sence to integrate that whole list because de updates depend on the status of every system, right?

Sigg3.net

You could use identi.ca instead of twitter. It's more free and also has an API. I was thinking of playing around with this in Python (the twitter modules work for identi.ca as well).

Learning Python atm, whilst studying at uni AND working, so don't hold your breath though.

stedaniels

It would be trivial to do this in bash. But without buy-in and commitment from someone in-the-know to update the message then I see little point in spending any more time on it.

Marie.O

stedaniels,

why don't you just keep track of the changes, hang out in IRC, track what happens in the wiki and the forum, and create messages for the project?
If I helped you, feel free to buy me a coffee: [url="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2VKASZLTJH7ES"]https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2VKASZLTJH7ES[/url]

stedaniels

I don't see a problem with that. Any preferences on where you'd like the messages pulled from?

The way I see it is, you'd obviously not want to have messages being pulled into everyone's systems if you didn't have ultimate control of the source.

If the source was a file on SVN you'd have that control while being able to update it at will, but it would require giving me write access to a subset of SVN, a bit of .htaccess magic could easily restrict my access if you felt it necessary.

If the source was something like Twitter, it's not very secure from a multiple people being able to access it and change the password point of view.

I could probably enhance my bash, to pull the latest post from a specific topic on the forum.. though if you'd prefer it to pull the content from forum then it'd be easier to do in Perl.

Thanks for joining the discussion, I'll await feedback.

Steve

Marie.O

It is not about *where* to pull stuff from, but to provide the source of information in a meaning full manor, i.e. YOU go around the places, and put everything news worthy together manually, and provide an rss feed of it, that everyone else can use. I was not referring to a programming task, but to a blogger task.
If I helped you, feel free to buy me a coffee: [url="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2VKASZLTJH7ES"]https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2VKASZLTJH7ES[/url]

stedaniels

I know what you meant, your missing what I meant.

If this script goes out, it's in every new/upgraded LinuxMCE installation. This means whoever controls the source where the script gets it's updates from can send all manner of messages out to that entire user base. Although I deem myself a very trustworthy person, it would be foolish for the source not to be on a linuxmce.org controlled resource. Even if I'm the one compiling it and publishing it, it should be at a LinuxMCE resource.

I hope you see what I mean now?