Author: ks156
Date: 2008-12-03 21:29:06 +0100 (Wed, 03 Dec 2008)
New Revision: 3005

Added:
   
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTux/chattertux.py
   
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStart/chattertux_start
   
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStop/chattertux_stop
Modified:
   
software_suite_v2/software/http_server_resources/chatter_tux/trunk/HTTPRessource/ResourceChatterTux.py
Log:
* Modified the chattertux resource to be compatible on Linux. (tried with
  manual status from a webbrowser, and all is working).
  I thinks the changes are not so important, so I didn't test this resource on
  Windows yet.
* Added start and stop shortcuts (daemonized with PIDFILE on
  /var/run/chattertux.pid)
* Added chattertux.py to snif the TCP frames. I still have to parse the frames,
  and send the status. But it works. ('Impacket' and 'pcapy' are requiered to
  use this sniffer).


Added: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTux/chattertux.py
===================================================================
--- 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTux/chattertux.py
                         (rev 0)
+++ 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTux/chattertux.py
 2008-12-03 20:29:06 UTC (rev 3005)
@@ -0,0 +1,68 @@
+#-*- coding:Utf-8 -*-
+
+import pcapy
+from impacket.ImpactDecoder import EthDecoder as Ethernet
+from threading import Thread
+import time
+import urllib
+
+def searchForIfaces():
+        try:
+                interfaces =  pcapy.findalldevs()
+                interfaces.remove('any')
+                interfaces.remove('lo')
+        except pcapy.PcapError, e:
+                interfaces = None
+        return interfaces
+
+class sniffer(Thread):
+    def __init__(self, iface, packetSize, promiscuite, timeout, sniffing, 
debug):
+        Thread.__init__(self)
+        self.iface = iface
+        self.packetSize= packetSize
+        self.promiscuite = promiscuite
+        self.timeout = timeout
+        self.sniffing = sniffing
+        self.reader = pcapy.open_live(self.iface,
+                self.packetSize,
+                self.promiscuite,
+                self.timeout)
+        self.DEBUG = debug
+
+        if self.DEBUG:
+            print(self.iface + " : " + self.reader.getnet() + " : " + 
self.reader.getmask() )
+               
+    def run(self):
+        while self.sniffing:
+            try :
+                ethernet = Ethernet().decode(self.reader.next()[1])
+                ip = ethernet.child()
+                l4 = ip.child()
+                hl = l4.child()
+                text = hl.get_buffer_as_string()
+
+                if self.DEBUG:
+                    print( "IP src : " + str(ip.get_ip_src()))
+                    print( "IP dst : " + str(ip.get_ip_dst()))
+                    print( "layer4 : " + str(self.layer4(l4)))
+                    print(hl.get_buffer_as_string())
+            except:
+                pass                                       
+                                     
+    def layer4(self, seg):
+        l4_dic = { 6:'TCP', 17:'UDP' }
+        try :
+            return l4_dic[seg.protocol]
+        except KeyError, e :
+            return None
+       
+                   
+       
+if __name__ == '__main__':
+    def run():
+        for iface in searchForIfaces() :
+            sniffIface = sniffer(iface, 1024, 0, 100, True, False)
+            sniffIface.start()
+    from tuxisalive.lib.daemonizer import Daemonizer
+    tuxHttpDaemon = Daemonizer('chattertux', '/var/log', run, True)
+    tuxHttpDaemon.start()


Property changes on: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTux/chattertux.py
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + text/x-python
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Added: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStart/chattertux_start
===================================================================
--- 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStart/chattertux_start
                         (rev 0)
+++ 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStart/chattertux_start
 2008-12-03 20:29:06 UTC (rev 3005)
@@ -0,0 +1,4 @@
+#!/bin/bash
+if [ ! -a /var/run/chattertux.pid ]; then
+    python $1
+fi


Property changes on: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStart/chattertux_start
___________________________________________________________________
Name: svn:executable
   + *

Added: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStop/chattertux_stop
===================================================================
--- 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStop/chattertux_stop
                           (rev 0)
+++ 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStop/chattertux_stop
   2008-12-03 20:29:06 UTC (rev 3005)
@@ -0,0 +1,7 @@
+#!/bin/bash
+pid=`cat /var/run/chattertux.pid`
+if [[ ! -z $pid ]]; then
+    kill $pid
+    rm /var/run/chattertux.pid
+fi
+


Property changes on: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/ChatterTuxStop/chattertux_stop
___________________________________________________________________
Name: svn:executable
   + *

Modified: 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/HTTPRessource/ResourceChatterTux.py
===================================================================
--- 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/HTTPRessource/ResourceChatterTux.py
      2008-12-03 14:09:19 UTC (rev 3004)
+++ 
software_suite_v2/software/http_server_resources/chatter_tux/trunk/HTTPRessource/ResourceChatterTux.py
      2008-12-03 20:29:06 UTC (rev 3005)
@@ -1,197 +1,214 @@
 #
 # Only for windows
 #
-if os.name == 'nt':
+print 'chatter tux'
+# Get the language installation
+CTLocutor = TUXDROID_DEFAULT_LOCUTOR
 
-    # Get the language installation
-    CTLocutor = TUXDROID_DEFAULT_LOCUTOR
+# Default configuration
+CTDefaultConf = {
+    'active' : True,
+}
 
-    # Default configuration
-    CTDefaultConf = {
-        'active' : True,
-    }
+# Attempt to read the configuration
+CTMyConfFile = "ResourceChatterTux.conf"
+CTMyConf = TDResourceConf().load(CTMyConfFile, CTDefaultConf)
 
-    # Attempt to read the configuration
-    CTMyConfFile = "ResourceChatterTux.conf"
-    CTMyConf = TDResourceConf().load(CTMyConfFile, CTDefaultConf)
+# Emoticons configuration
+CHATTERTUX_ATT_PATH = os.path.join(TUXDROID_BASE_PATH, "resources",
+    "attitunes", "chatterTux")
 
-    # Emoticons configuration
-    CHATTERTUX_ATT_PATH = os.path.join(TUXDROID_BASE_PATH, "resources",
-        "attitunes", "chatterTux")
+CTEmoticonToAttitune = {
+    ':d' : os.path.join(CHATTERTUX_ATT_PATH, "Rire.wav"),
+    'lol' : os.path.join(CHATTERTUX_ATT_PATH, "LOL.wav"),
+    'mdr' : os.path.join(CHATTERTUX_ATT_PATH, "MDR.wav"),
+    ';)' : os.path.join(CHATTERTUX_ATT_PATH, "ClinDOeil.wav"),
+    '(h)' : os.path.join(CHATTERTUX_ATT_PATH, "Star.wav"),
+    ':@' : os.path.join(CHATTERTUX_ATT_PATH, "Facher.wav"),
+    ':s' : os.path.join(CHATTERTUX_ATT_PATH, "Confus.wav"),
+    ':$' : os.path.join(CHATTERTUX_ATT_PATH, "Embarrasse.wav"),
+    ":'(" : os.path.join(CHATTERTUX_ATT_PATH, "EnPleurs.wav"),
+    '(a)' : os.path.join(CHATTERTUX_ATT_PATH, "Angel.wav"),
+    '8o|' : os.path.join(CHATTERTUX_ATT_PATH, "Agressif.wav"),
+    '8-|' : os.path.join(CHATTERTUX_ATT_PATH, "PremierDeLaClasse.wav"),
+    '+o(' : os.path.join(CHATTERTUX_ATT_PATH, "Malade.wav"),
+    '<:o)' : os.path.join(CHATTERTUX_ATT_PATH, "Fete.wav"),
+    '|-)' : os.path.join(CHATTERTUX_ATT_PATH, "Endormi.wav"),
+    ':-#' : os.path.join(CHATTERTUX_ATT_PATH, "BoucheCousue.wav"),
+    ':-*' : os.path.join(CHATTERTUX_ATT_PATH, "Secret.wav"),
+    '8-)' : os.path.join(CHATTERTUX_ATT_PATH, "YeuxRoulants.wav"),
+    '(l)' : os.path.join(CHATTERTUX_ATT_PATH, "Coeur.wav"),
+    '(u)' : os.path.join(CHATTERTUX_ATT_PATH, "CoeurBrise.wav"),
+    '(@)' : os.path.join(CHATTERTUX_ATT_PATH, "Chat.wav"),
+    '(&)' : os.path.join(CHATTERTUX_ATT_PATH, "Dog.wav"),
+    '(sn)' : os.path.join(CHATTERTUX_ATT_PATH, "Escargot.wav"),
+    '(s)' : os.path.join(CHATTERTUX_ATT_PATH, "Lune.wav"),
+    '(*)' : os.path.join(CHATTERTUX_ATT_PATH, "Etoile.wav"),
+    '(#)' : os.path.join(CHATTERTUX_ATT_PATH, "Soleil.wav"),
+    '(k)' : os.path.join(CHATTERTUX_ATT_PATH, "Bisou.wav"),
+    '(r)' : os.path.join(CHATTERTUX_ATT_PATH, "ArcEnCiel.wav"),
+    '(})' : os.path.join(CHATTERTUX_ATT_PATH, "AccoladeDroite.wav"),
+    '({)' : os.path.join(CHATTERTUX_ATT_PATH, "AccoladeGauche.wav"),
+    '(6)' : os.path.join(CHATTERTUX_ATT_PATH, "Demoniac.wav"),
+    '(o)' : os.path.join(CHATTERTUX_ATT_PATH, "Horloge.wav"),
+    '(f)' : os.path.join(CHATTERTUX_ATT_PATH, "Rose.wav"),
+    ':|' : os.path.join(CHATTERTUX_ATT_PATH, "EmoticDecu.att"),
+}
+CTEmoticonsKeys = CTEmoticonToAttitune.keys()
 
-    CTEmoticonToAttitune = {
-        ':d' : os.path.join(CHATTERTUX_ATT_PATH, "Rire.wav"),
-        'lol' : os.path.join(CHATTERTUX_ATT_PATH, "LOL.wav"),
-        'mdr' : os.path.join(CHATTERTUX_ATT_PATH, "MDR.wav"),
-        ';)' : os.path.join(CHATTERTUX_ATT_PATH, "ClinDOeil.wav"),
-        '(h)' : os.path.join(CHATTERTUX_ATT_PATH, "Star.wav"),
-        ':@' : os.path.join(CHATTERTUX_ATT_PATH, "Facher.wav"),
-        ':s' : os.path.join(CHATTERTUX_ATT_PATH, "Confus.wav"),
-        ':$' : os.path.join(CHATTERTUX_ATT_PATH, "Embarrasse.wav"),
-        ":'(" : os.path.join(CHATTERTUX_ATT_PATH, "EnPleurs.wav"),
-        '(a)' : os.path.join(CHATTERTUX_ATT_PATH, "Angel.wav"),
-        '8o|' : os.path.join(CHATTERTUX_ATT_PATH, "Agressif.wav"),
-        '8-|' : os.path.join(CHATTERTUX_ATT_PATH, "PremierDeLaClasse.wav"),
-        '+o(' : os.path.join(CHATTERTUX_ATT_PATH, "Malade.wav"),
-        '<:o)' : os.path.join(CHATTERTUX_ATT_PATH, "Fete.wav"),
-        '|-)' : os.path.join(CHATTERTUX_ATT_PATH, "Endormi.wav"),
-        ':-#' : os.path.join(CHATTERTUX_ATT_PATH, "BoucheCousue.wav"),
-        ':-*' : os.path.join(CHATTERTUX_ATT_PATH, "Secret.wav"),
-        '8-)' : os.path.join(CHATTERTUX_ATT_PATH, "YeuxRoulants.wav"),
-        '(l)' : os.path.join(CHATTERTUX_ATT_PATH, "Coeur.wav"),
-        '(u)' : os.path.join(CHATTERTUX_ATT_PATH, "CoeurBrise.wav"),
-        '(@)' : os.path.join(CHATTERTUX_ATT_PATH, "Chat.wav"),
-        '(&)' : os.path.join(CHATTERTUX_ATT_PATH, "Dog.wav"),
-        '(sn)' : os.path.join(CHATTERTUX_ATT_PATH, "Escargot.wav"),
-        '(s)' : os.path.join(CHATTERTUX_ATT_PATH, "Lune.wav"),
-        '(*)' : os.path.join(CHATTERTUX_ATT_PATH, "Etoile.wav"),
-        '(#)' : os.path.join(CHATTERTUX_ATT_PATH, "Soleil.wav"),
-        '(k)' : os.path.join(CHATTERTUX_ATT_PATH, "Bisou.wav"),
-        '(r)' : os.path.join(CHATTERTUX_ATT_PATH, "ArcEnCiel.wav"),
-        '(})' : os.path.join(CHATTERTUX_ATT_PATH, "AccoladeDroite.wav"),
-        '({)' : os.path.join(CHATTERTUX_ATT_PATH, "AccoladeGauche.wav"),
-        '(6)' : os.path.join(CHATTERTUX_ATT_PATH, "Demoniac.wav"),
-        '(o)' : os.path.join(CHATTERTUX_ATT_PATH, "Horloge.wav"),
-        '(f)' : os.path.join(CHATTERTUX_ATT_PATH, "Rose.wav"),
-        ':|' : os.path.join(CHATTERTUX_ATT_PATH, "EmoticDecu.att"),
-    }
-    CTEmoticonsKeys = CTEmoticonToAttitune.keys()
-
+if os.name == 'nt':
     # Chatter tux exe commands
     CTChatterTuxStart = '"%s"' % os.path.join(TUXDROID_BASE_PATH, "resources",
         "tuxhttpserver", "chatterTux", "chattertux_start.exe")
     CTChatterTuxStop = '"%s"' % os.path.join(TUXDROID_BASE_PATH, "resources",
         "tuxhttpserver", "chatterTux", "chattertux_stop.exe")
+else:
+    CTChatterTuxStart = "%s %s" %((os.path.join(TUXDROID_BASE_PATH,
+        "tuxhttpserver", "chatterTux", "chattertux_start")),
+        (os.path.join(TUXDROID_BASE_PATH,
+        "tuxhttpserver", "chatterTux", "chattertux.py")))
+    CTChatterTuxStop = "%s %s" %((os.path.join(TUXDROID_BASE_PATH,
+        "tuxhttpserver", "chatterTux", "chattertux_stop")),
+        (os.path.join(TUXDROID_BASE_PATH,
+        "tuxhttpserver", "chatterTux", "chatterTux.py")))
+    Glb_ResourcesLog.logInfo("%s"%CTChatterTuxStart)
 
-    # If the service is active then load it at the server launch
-    if CTMyConf['active']:
-        os.system(CTChatterTuxStart)
 
-    # Function to play emoticon asynchronously
-    def CTPlayEmoticonAsync(emoticon):
-        mediaToPlay = CTEmoticonToAttitune[emoticon]
+# If the service is active then load it at the server launch
+if CTMyConf['active']:
+    ret = os.system(CTChatterTuxStart)
+    Glb_ResourcesLog.logInfo("%d"%ret)
+
+
+# Function to play emoticon asynchronously
+def CTPlayEmoticonAsync(emoticon):
+    mediaToPlay = CTEmoticonToAttitune[emoticon]
+    if os.name == 'nt':
         if not os.path.isdir(str(mediaToPlay)):
             return
-        if mediaToPlay.lower().rfind(".att") != -1:
-            Glb_tuxApi.attitune.load(str(CTEmoticonToAttitune[emoticon]))
-            Glb_tuxApi.attitune.play()
-        elif mediaToPlay.lower().rfind(".wav") != -1:
-            Glb_tuxApi.wav.playAsync(str(mediaToPlay))
+    else:
+        if not os.path.isfile(str(mediaToPlay)):
+            return
 
-    # Callback function on chattertux status
-    def CTOnChatterStatus(stName, chatName, cmd, value1, value2):
-        global CTLocutor
+    if mediaToPlay.lower().rfind(".att") != -1:
+        Glb_tuxApi.attitune.load(str(CTEmoticonToAttitune[emoticon]))
+        Glb_tuxApi.attitune.play()
+    elif mediaToPlay.lower().rfind(".wav") != -1:
+        Glb_tuxApi.wav.playAsync(str(mediaToPlay))
 
-        # reencode the text.
-        try:
-            u = value2.decode("utf-8")
-            value2 = u.encode("cp1252", "replace")
-            u = value2.decode("utf-8")
-            value2 = u.encode("cp1252", "replace")
-        except:
-            pass
+# Callback function on chattertux status
+def CTOnChatterStatus(stName, chatName, cmd, value1, value2):
+    global CTLocutor
+    # reencode the text.
+    try:
+        u = value2.decode("utf-8")
+        value2 = u.encode("cp1252", "replace")
+        u = value2.decode("utf-8")
+        value2 = u.encode("cp1252", "replace")
+    except:
+        pass
 
-        # speak the text if begin is "tuxdroid>"
-        if value2.find('tuxdroid>') == 0:
-            Glb_tuxApi.tts.setLocutor(CTLocutor)
-            Glb_tuxApi.tts.setPitch(130)
-            Glb_tuxApi.tts.speakPush(value2[9:])
-            return
+    # speak the text if begin is "tuxdroid>"
+    if value2.find('tuxdroid>') == 0:
+        Glb_tuxApi.tts.setLocutor(CTLocutor)
+        Glb_tuxApi.tts.setPitch(130)
+        Glb_tuxApi.tts.speakPush(value2[9:])
+        return
 
-        # speak the text if begin is "tuxdroid"
-        if value2.find('tuxdroid') == 0:
-            Glb_tuxApi.tts.setLocutor(CTLocutor)
-            Glb_tuxApi.tts.setPitch(130)
-            Glb_tuxApi.tts.speakPush(value2[8:])
-            return
+    # speak the text if begin is "tuxdroid"
+    if value2.find('tuxdroid') == 0:
+        Glb_tuxApi.tts.setLocutor(CTLocutor)
+        Glb_tuxApi.tts.setPitch(130)
+        Glb_tuxApi.tts.speakPush(value2[8:])
+        return
 
-        # speak the text if begin is "tux>"
-        if value2.find('tux>') == 0:
-            Glb_tuxApi.tts.setLocutor(CTLocutor)
-            Glb_tuxApi.tts.setPitch(130)
-            Glb_tuxApi.tts.speakPush(value2[4:])
-            return
+    # speak the text if begin is "tux>"
+    if value2.find('tux>') == 0:
+        Glb_tuxApi.tts.setLocutor(CTLocutor)
+        Glb_tuxApi.tts.setPitch(130)
+        Glb_tuxApi.tts.speakPush(value2[4:])
+        return
 
-        # speak the text if begin is "tux"
-        if value2.find('tux') == 0:
-            Glb_tuxApi.tts.setLocutor(CTLocutor)
-            Glb_tuxApi.tts.setPitch(130)
-            Glb_tuxApi.tts.speakPush(value2[3:])
-            return
+    # speak the text if begin is "tux"
+    if value2.find('tux') == 0:
+        Glb_tuxApi.tts.setLocutor(CTLocutor)
+        Glb_tuxApi.tts.setPitch(130)
+        Glb_tuxApi.tts.speakPush(value2[3:])
+        return
 
-        # Match emoticons in the text:
-        value2 = value2.replace("������", '|')
-        value2 = value2.replace("�����", '&')
-        value2 = value2.replace("����", '+')
-        value2 = value2.lower()
+    # Match emoticons in the text:
+    value2 = value2.replace("������", '|')
+    value2 = value2.replace("�����", '&')
+    value2 = value2.replace("����", '+')
+    value2 = value2.lower()
 
-        for emoticon in CTEmoticonsKeys:
-            if value2.find(emoticon) != -1:
-                t = threading.Thread(target = CTPlayEmoticonAsync,
-                    args = [emoticon, ])
-                t.start()
-                return
+    for emoticon in CTEmoticonsKeys:
+        if value2.find(emoticon) != -1:
+            t = threading.Thread(target = CTPlayEmoticonAsync,
+                args = [emoticon, ])
+            t.start()
+            return
 
-    # Set a callback function to the chattertux status
-    Glb_tuxApi.event.handler.register("all", CTOnChatterStatus,
-        ["chatter", "MSN", "MSG", None, None])
-    # Set the local api event delay to 1 Sec
-    Glb_tuxApi.event.setDelay(1.0)
+# Set a callback function to the chattertux status
+Glb_tuxApi.event.handler.register("all", CTOnChatterStatus,
+    ["chatter", "MSN", "MSG", None, None])
+# Set the local api event delay to 1 Sec
+Glb_tuxApi.event.setDelay(1.0)
 
-    # -------------------------------------------------------------------------
-    # Resource services
-    # -------------------------------------------------------------------------
-    # /chatter_tux/start?
-    # -------------------------------------------------------------------------
-    def funct_chatter_tux_start(id_client, parameters):
-        global CTChatterTuxStart
-        global CTMyConf
-        global CTMyConfFile
+# -------------------------------------------------------------------------
+# Resource services
+# -------------------------------------------------------------------------
+# /chatter_tux/start?
+# -------------------------------------------------------------------------
+def funct_chatter_tux_start(id_client, parameters):
+    global CTChatterTuxStart
+    global CTMyConf
+    global CTMyConfFile
 
-        content_struct = copy.deepcopy(DEFAULT_CONTENT_STRUCT)
-        content_struct['root']['result'] = getStrError(E_TDREST_SUCCESS)
+    content_struct = copy.deepcopy(DEFAULT_CONTENT_STRUCT)
+    content_struct['root']['result'] = getStrError(E_TDREST_SUCCESS)
 
-        Glb_ResourcesLog.logInfo("Start ChatterTux service.")
-        os.system(CTChatterTuxStart)
-        CTMyConf['active'] = True
+    Glb_ResourcesLog.logInfo("Start ChatterTux service.")
+    os.system(CTChatterTuxStart)
+    CTMyConf['active'] = True
 
-        # Save the configuration
-        TDResourceConf().store(CTMyConfFile, CTMyConf)
+    # Save the configuration
+    TDResourceConf().store(CTMyConfFile, CTMyConf)
 
-        content = structToXML(content_struct, True)
+    content = structToXML(content_struct, True)
 
-        return DEFAULT_HEADERS, content
+    return DEFAULT_HEADERS, content
 
-    Glb_ServiceContainer.createService('/chatter_tux/start?',
-                            TDCC_LEVEL_FREE_CLIENT,
-                            funct_chatter_tux_start,
-                            "ChatterTux",
-                            "Start the service.")
+Glb_ServiceContainer.createService('/chatter_tux/start?',
+                        TDCC_LEVEL_FREE_CLIENT,
+                        funct_chatter_tux_start,
+                        "ChatterTux",
+                        "Start the service.")
 
-    # -------------------------------------------------------------------------
-    # /chatter_tux/stop?
-    # -------------------------------------------------------------------------
-    def funct_chatter_tux_stop(id_client, parameters):
-        global CTChatterTuxStop
-        global CTMyConf
-        global CTMyConfFile
+# -------------------------------------------------------------------------
+# /chatter_tux/stop?
+# -------------------------------------------------------------------------
+def funct_chatter_tux_stop(id_client, parameters):
+    global CTChatterTuxStop
+    global CTMyConf
+    global CTMyConfFile
 
-        content_struct = copy.deepcopy(DEFAULT_CONTENT_STRUCT)
-        content_struct['root']['result'] = getStrError(E_TDREST_SUCCESS)
+    content_struct = copy.deepcopy(DEFAULT_CONTENT_STRUCT)
+    content_struct['root']['result'] = getStrError(E_TDREST_SUCCESS)
 
-        Glb_ResourcesLog.logInfo("Stop ChatterTux service.")
-        os.system(CTChatterTuxStop)
-        CTMyConf['active'] = False
+    Glb_ResourcesLog.logInfo("Stop ChatterTux service.")
+    os.system(CTChatterTuxStop)
+    CTMyConf['active'] = False
 
-        # Save the configuration
-        TDResourceConf().store(CTMyConfFile, CTMyConf)
+    # Save the configuration
+    TDResourceConf().store(CTMyConfFile, CTMyConf)
 
-        content = structToXML(content_struct, True)
+    content = structToXML(content_struct, True)
 
-        return DEFAULT_HEADERS, content
+    return DEFAULT_HEADERS, content
 
-    Glb_ServiceContainer.createService('/chatter_tux/stop?',
-                            TDCC_LEVEL_FREE_CLIENT,
-                            funct_chatter_tux_stop,
-                            "ChatterTux",
-                            "Stop the service.")
+Glb_ServiceContainer.createService('/chatter_tux/stop?',
+                        TDCC_LEVEL_FREE_CLIENT,
+                        funct_chatter_tux_stop,
+                        "ChatterTux",
+                        "Stop the service.")


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to