iro/iro.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 22 Oct 2009 10:15:11 +0200
changeset 1 18918fbc397c
parent 0 a3b6e531f0d2
child 6 c5672760138b
permissions -rw-r--r--
[svn r95] merged daemon-1/iro to iro-package/iro
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     1
# -*- coding: utf-8 -*-
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     2
#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     3
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     6
#either version 3 of the License, or any later version.
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     9
#See the GNU General Public License for more details.
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    10
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    11
#You should have received a copy of the GNU General Public License
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    13
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    14
# Server code
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    15
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    16
from xmlrpc import SecureUserDBXMLRPCServer,UserDB
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    17
import time, os, md5
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    18
from user import User, Admin
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    19
import content
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    20
import anbieter
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    21
import ConfigParser
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    22
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    23
class MyUserDB(UserDB):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    24
    def __init__(self, userlist,jobqueue):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    25
        UserDB.__init__(self, None,userlist,jobqueue)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    26
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    27
    def createUser(self, user):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    28
        self.userlist[self.createHash(user)]=user["class"](self.jobqueue)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    29
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    30
class Job(object):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    31
    '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    32
    Basic class for all jobs
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    33
    '''   
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    34
    def __init__(self,provider,name):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    35
        self.provider=provider
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    36
        self.name=name
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    37
        self.status = "init"
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    38
        self.dStatus={"good":[], "failed":[]}
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    39
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    40
    def start(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    41
        self.status = "started"
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    42
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    43
    def stop(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    44
        self.status = "stopped"
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    45
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    46
    def getStatus(self,detailed):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    47
        if detailed and self.status == "started" or self.status == "sended":
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    48
            return self.status, self.dStatus
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    49
        return self.status, {}
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    50
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    51
    def getName(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    52
        return self.name
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    53
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    54
    def getProvider(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    55
        return self.provider
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    56
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    57
    def addGood(self, good):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    58
        if type(good) == list:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    59
            self.dStatus['good']=self.dStatus['good']+good
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    60
        else:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    61
            self.dStatus['good'].append(good)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    62
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    63
    def addFailed(self, failed):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    64
        if type(failed) == list:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    65
            self.dStatus['failed']=self.dStatus['failed']+failed
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    66
        else:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    67
            self.dStatus['failed'].append(failed)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    68
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    69
class MessageJob(Job):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    70
    '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    71
    A specialized class for smsjobs
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    72
    '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    73
    def __init__(self,provider,name, message,recipients):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    74
        self.message=message
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    75
        self.recipients=recipients
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    76
        Job.__init__(self,provider, name)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    77
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    78
    def stop(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    79
        pass
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    80
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    81
    def start(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    82
        Job.start(self)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    83
        self.provider.setJob(self)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    84
        self.message.sendto(self.provider, self.recipients)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    85
        self.status="sended"
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    86
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    87
    def getMessage(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    88
        return self.message
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    89
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    90
    def getRecipients(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    91
        return self.recipients
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    92
 
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    93
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    94
class MySipgate(anbieter.sipgate):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    95
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    96
    def __init__(self,user="",password="" ):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    97
        anbieter.sipgate.__init__(self, user, password)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    98
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    99
    def setJob(self, job):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   100
        self.job=job
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   101
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   102
    def updateStatus(self, arranged=None, failed=None):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   103
        if arranged:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   104
            self.job.addGood(arranged)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   105
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   106
        if failed:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   107
            self.job.addFailed(failed)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   108
            
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   109
class MySMTP(anbieter.SMTP):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   110
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   111
    def __init__(self,config_filename=None,section="smtp"):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   112
        anbieter.SMTP.__init__(self,config_filename,section)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   113
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   114
    def setJob(self, job):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   115
        self.job=job
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   116
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   117
    def updateStatus(self, arranged=None, failed=None):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   118
        if arranged:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   119
            self.job.addGood(arranged)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   120
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   121
        if failed:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   122
            self.job.addFailed(failed)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   123
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   124
class MySmstrade(anbieter.smstrade):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   125
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   126
    def __init__(self ):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   127
        anbieter.smstrade.__init__(self )
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   128
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   129
    def setJob(self, job):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   130
        self.job=job
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   131
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   132
    def updateStatus(self, arranged=None, failed=None):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   133
        if arranged:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   134
            self.job.addGood(arranged)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   135
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   136
        if failed:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   137
            self.job.addFailed(failed)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   138
						
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   139
class Jobs:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   140
    '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   141
    Providing an list of jobs; each new job gets a hash id
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   142
    '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   143
    def __init__(self,manager, queue,provider):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   144
        self.jobs={}
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   145
        self.manager=manager
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   146
        self.queue=queue
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   147
        self.provider=provider
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   148
        
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   149
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   150
    def __getitem__(self,key):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   151
        return self.jobs[key]
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   152
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   153
    def __registerJob__(self, job):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   154
        id = self._createID()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   155
        self.jobs[id]=job
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   156
        self.queue.put(job)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   157
        return id
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   158
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   159
    def newSMS(self,message,recipients):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   160
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   161
        creates a new SMS
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   162
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   163
        job=self.manager.MessageJob(self.provider["sms"],message, content.SMS(message),recipients)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   164
        return self.__registerJob__(job)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   165
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   166
    def newFAX(self,subject, fax,recipients):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   167
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   168
        creates a new Fax
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   169
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   170
        job=self.manager.MessageJob(self.provider["fax"],subject, content.FAX(subject, fax),recipients)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   171
        return self.__registerJob__(job)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   172
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   173
    def newMail(self,subject, body,recipients):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   174
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   175
        creates a new Mail
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   176
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   177
        job=self.manager.MessageJob(self.provider["mail"],subject, content.Mail(subject, body),recipients)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   178
        return self.__registerJob__(job) 
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   179
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   180
    def _createID(self):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   181
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   182
        creats a random hash id
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   183
        '''
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   184
        while True:
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   185
            m = md5.new()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   186
            m.update(str(time.time()))
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   187
            m.update(os.urandom(10))
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   188
            if not self.jobs.has_key(m.hexdigest):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   189
                self.jobs[m.hexdigest()]=None
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   190
                break
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   191
        return m.hexdigest()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   192
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   193
def start(userlist):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   194
    from multiprocessing import Queue
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   195
    from multiprocessing.managers import BaseManager
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   196
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   197
    class MyManager(BaseManager):
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   198
        pass
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   199
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   200
    MyManager.register('MessageJob', MessageJob) 
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   201
    manager = MyManager()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   202
    manager.start()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   203
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   204
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   205
    #anbieter erzeugen und konfigurieren
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   206
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   207
    sip=MySipgate()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   208
    sip.read_basic_config("iro.conf")
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   209
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   210
    localhost=MySMTP()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   211
    localhost.read_basic_config("iro.conf")
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   212
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   213
    smstrade=MySmstrade()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   214
    smstrade.read_basic_config("iro.conf")
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   215
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   216
    #Benutzerdatenbank erstellen
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   217
    queue = Queue()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   218
    provider={"sms":sip, "fax":sip, "mail":localhost}
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   219
    jobqueue=Jobs(manager,  queue, provider)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   220
    userdb=MyUserDB(userlist,jobqueue)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   221
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   222
    #working thread erstellen
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   223
    from worker import Worker
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   224
    worker=Worker(queue)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   225
    worker.start()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   226
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   227
    #Server starten
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   228
    cp = ConfigParser.ConfigParser()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   229
    cp.read(["iro.conf"])
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   230
    cert=cp.get('server', 'cert')
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   231
    key=cp.get('server', 'key')
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   232
    server = SecureUserDBXMLRPCServer(addr=("localhost", 8000), 
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   233
                                      userdb=userdb,
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   234
                                      certificate=cert,privatekey=key)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   235
    server.relam="xmlrpc"
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   236
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   237
    print "Server started..."
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   238
    server.serve_forever()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   239
    
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   240
    worker.terminate()
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   241
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   242
if __name__ == '__main__':
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   243
    userlist=[{"name":"test","password":"test",  "class":User},
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   244
	      {"name":"test2","password":"test2", "class": Admin}]
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   245
    start(userlist)
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   246
18918fbc397c [svn r95] merged daemon-1/iro to iro-package/iro
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
   247