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