示例#1
0
文件: sensor.py 项目: tdukaric/FOI
class Posiljatelj( spade.Agent.Agent ):
    class InformBehav( spade.Behaviour.OneShotBehaviour ):
        def _process( self ):
            primatelj = spade.AID.aid( name=self.server,  addresses=[self.serverAdresa])
            self.msg = spade.ACLMessage.ACLMessage()
            self.msg.setPerformative( "inform" )
            self.msg.setOntology( "IDS" )
            self.msg.setLanguage( "english" )
            self.msg.addReceiver( primatelj )
            self.msg.setContent( 'service:' + self.service + '#warning:' + self.warning + '#localIP:' + self.localIP + '#remoteIP:' + self.ip + '#level:' + self.level)
            print self.msg
            self.myAgent.send( self.msg )
            print "Message send!"
    
    def _setup(self):
        print "Senzor: starting . . ."
        b = self.InformBehav()
        b.serverAdresa = self.serverAdresa
        b.server = self.server
        b.warning = self.warning
        b.service = self.service
        b.localIP = self.localIP
        b.ip = self.ip
        b.level = self.level
        
        self.agnt = DfAgentDescription()
        self.agnt.setAID( self.getAID() )
        SD = ServiceDescription()
        SD.setName( self.server )
        SD.setType( 'sensor' )
        self.agnt.addService( SD )
        self.registerService( self.agnt )
        
        self.addBehaviour( b, None )
示例#2
0
文件: Platform.py 项目: atiq-cs/spade
 def services(self):
     import sys
     import time
     servername = self.getDomain()
     platform = self.getName()
     version = str(sys.version)
     the_time = str(time.ctime())
     try:
         search = self.searchService(DfAgentDescription())
     except Exception as e:
         print("Exception: " + str(e))
     servs = {}
     for dad in search:
         for service in dad.getServices():
             if service.getType() not in list(servs.keys()):
                 servs[service.getType()] = []
             new_dad = dad
             new_dad.services = [service]
             s = Service(dad=new_dad)
             servs[service.getType()].append(s)
     self.DEBUG("Services: " + str(servs))
     return "services.pyra", dict(name=platform,
                                  servername=servername,
                                  platform=platform,
                                  version=version,
                                  time=the_time,
                                  services=servs)
 def services(self):
     import sys
     import time
     servername = self.getDomain()
     platform = self.getName()
     version = str(sys.version)
     the_time = str(time.ctime())
     try:
         search = self.searchService(DfAgentDescription())
     except Exception, e:
         print "Exception: " + str(e)
    def inicijalizacija(self):
        self.opisnik = DfAgentDescription()
        self.opisnik.setAID(self.getAID())
        ou = ServiceDescription()
        ou.setName('Axelrodov turnir')
        ou.setType('Komunikacija')

        self.opisnik.addService(ou)
        self.registerService(self.opisnik)
        self.brojSudionika = int(brojPrijava)
        self.brojIteracija = int(brojIteracijaIgre)
        self.zatvorenici = []
        self.igraci = {}
        self.igraci_pomocna = {}
        self.strategije = {}
        self.godine = {}
        self.aktualni_igrac = None
        self.turnir = []
        self.mapa = {}
        self.matrica_placanja = {'SuradnjaSuradnja': [1, 1], 'SukobSuradnja': [0, 5], 'SuradnjaSukob': [5, 0], 'SukobSukob': [3, 3]}
        self.brojac = 0
示例#5
0
文件: ids.py 项目: tdukaric/FOI
 def _setup(self):
     rb = self.SvePoruke()
     self.setDefaultBehaviour( rb )
     
     
     self.agnt = DfAgentDescription()
     self.agnt.setAID( self.getAID() )
     SD = ServiceDescription()
     SD.setName( 'coordinator' )
     SD.setType( 'ids' )
     self.agnt.addService( SD )
     self.registerService( self.agnt )
     
     ids_template = spade.Behaviour.ACLTemplate()
     ids_template.setOntology( "IDS" )
     mt=spade.Behaviour.MessageTemplate(ids_template)
     
     ab = self.PorukeIDSa()
     self.addBehaviour( ab, mt )
示例#6
0
文件: sensor.py 项目: tdukaric/FOI
 def _setup(self):
     print "Senzor: starting . . ."
     b = self.InformBehav()
     b.serverAdresa = self.serverAdresa
     b.server = self.server
     b.warning = self.warning
     b.service = self.service
     b.localIP = self.localIP
     b.ip = self.ip
     b.level = self.level
     
     self.agnt = DfAgentDescription()
     self.agnt.setAID( self.getAID() )
     SD = ServiceDescription()
     SD.setName( self.server )
     SD.setType( 'sensor' )
     self.agnt.addService( SD )
     self.registerService( self.agnt )
     
     self.addBehaviour( b, None )
示例#7
0
文件: ids.py 项目: tdukaric/FOI
class Primatelj( spade.Agent.Agent ):
    
    class SvePoruke( spade.Behaviour.Behaviour ):
        def _process( self ):
            self.msg = None
            self.msg = self._receive( True, 2 )
            if self.msg:
                print "Message received!"
            else:
                print "Waiting for message..."
    class PorukeIDSa( spade.Behaviour.Behaviour ):
        pravila = []
        
        def _process( self ):
            
            self.msg = None
            self.msg = self._receive( True )
            if self.msg:
                aad = spade.AMS.AmsAgentDescription()
                aad.ownership = "BUSY"
                result = self.myAgent.modifyAgent(aad)
                if result:
                    print "BUSY"

                lista = self.msg.content.split("#")
                for elem in lista[0:]:
                    naziv, sadrzaj = elem.split( ':' )
                    if naziv == 'warning':
                        warning = sadrzaj
                    #print warning
                    if naziv == 'service':
                        service = sadrzaj
                    #print service
                    if naziv == 'remoteIP':
                        remoteIP = sadrzaj
                    #print remoteIP
                    if naziv == 'level':
                        level = sadrzaj
                    #print level
                    if naziv == 'localIP':
                        localIP = sadrzaj
                    #print localIP
                    if naziv == 'level':
                        level = sadrzaj
                    #print level
                    
                #print str(lista)
                print self.msg.content
                self.pravila.append(self.msg.content)
                
                print self.pravila
                
                if(int(level) > 3):
                    print 'High threat!'
                    print 'Sending email...'
                    fromaddr = '*****@*****.**'
                    toaddrs  = '*****@*****.**'
                    msg = "Service= %s \nWarning= %s \nRemote IP= %s \nLocal IP= %s \nLevel= %s " % (service, warning, remoteIP, localIP, level)
                    username = '******'
                    password = '******'
                    server = smtplib.SMTP('smtp.gmail.com:587')
                    server.starttls()
                    server.login(username,password)
                    server.sendmail(fromaddr, toaddrs, msg)
                    server.quit()
                    print 'Mail sent!'
            
                print self.msg.content
                
                a = spade.Agent.Agent('[email protected]', 'tajna')
                a.start()
                
                sd = spade.DF.ServiceDescription()
                sd.setType('minion')
                dad = spade.DF.DfAgentDescription()
                dad.addService(sd)
                rezultat = a.searchService( dad )
                for i in rezultat:
                    primatelj = i.getAID()
                    inf = spade.ACLMessage.ACLMessage()
                    inf.setPerformative( "inform" )
                    inf.setOntology( "minion" )
                    inf.setLanguage( "english" )
                    inf.addReceiver( primatelj )
                    inf.setContent( 'service:' + service + '#warning:' + warning + '#localIP:' + localIP + '#remoteIP:' + remoteIP + '#level:' + level)
                    a.send( inf )
                    print "Message send!"
                


                a._kill()
            
                            
                aad = spade.AMS.AmsAgentDescription()
                aad.ownership = "FREE"
                result = self.myAgent.modifyAgent(aad)
                if result:
                    print "FREE"
    
    def _setup(self):
        rb = self.SvePoruke()
        self.setDefaultBehaviour( rb )
        
        
        self.agnt = DfAgentDescription()
        self.agnt.setAID( self.getAID() )
        SD = ServiceDescription()
        SD.setName( 'coordinator' )
        SD.setType( 'ids' )
        self.agnt.addService( SD )
        self.registerService( self.agnt )
        
        ids_template = spade.Behaviour.ACLTemplate()
        ids_template.setOntology( "IDS" )
        mt=spade.Behaviour.MessageTemplate(ids_template)
        
        ab = self.PorukeIDSa()
        self.addBehaviour( ab, mt )
class Policajac(Agent):

    def _setup(self):
        self.inicijalizacija()
        template1 = self.postaviTemplate("Postaja")
        self.addBehaviour(self.Postaja(), template1)
        template2 = self.postaviTemplate("Igranje")
        self.addBehaviour(self.Igranje(), template2)

    class Postaja(EventBehaviour):
        def _process(self):
            msg = self._receive()
            print "Dolazi zatvorenik: ", msg.getSender().getName()
            print "Odabrana strategija: ", msg.getContent(), "\n"
            
            igrac = msg.getSender()
            self.myAgent.zatvorenici.append(igrac)
            self.myAgent.strategije[igrac.getName()] = msg.getContent()
            self.myAgent.godine[igrac.getName()] = 0
            self.myAgent.igraci_pomocna[igrac.getName()] = igrac
            if len(self.myAgent.igraci_pomocna) == self.myAgent.brojSudionika:
                for i in range(0, self.myAgent.brojSudionika - 1):
                    self.myAgent.igraci[self.myAgent.zatvorenici[i].getName()] = []
                    for j in range(i + 1, self.myAgent.brojSudionika):
                        self.myAgent.igraci[self.myAgent.zatvorenici[i].getName()].append(self.myAgent.zatvorenici[j])
                keys = self.myAgent.igraci.keys()
                self.myAgent.aktualni_igrac = keys[0]
                self.myAgent.dodjeliProtivnika(False)

    class Igranje(EventBehaviour):
        def _process(self):
            msg = self._receive()
            index_igre = self.myAgent.mapa[msg.getSender().getName()]
            igra = self.myAgent.turnir[index_igre]
            if igra.brojac < self.myAgent.brojIteracija:
                print "Zatvorenik " + msg.getSender().getName() + " je odabrao potez: " + msg.getContent()
                igra.potezi[igra.igraci.index(msg.getSender())] = msg.getContent()
                if None not in igra.potezi:
                    rezultat = self.myAgent.matrica_placanja[igra.potezi[0] + igra.potezi[1]]
                    igra.ukupni_rezultat[0] = igra.ukupni_rezultat[0] + rezultat[0]
                    igra.ukupni_rezultat[1] = igra.ukupni_rezultat[1] + rezultat[1]
                    self.myAgent.sendMSG(rezultat[0], igra.igraci[0], "Rezultat")
                    self.myAgent.sendMSG(rezultat[1], igra.igraci[1], "Rezultat")
                    igra.potezi[0] = None
                    igra.potezi[1] = None
                    igra.brojac += 1
            else:
                if msg.getSender().getName() == igra.igraci[0].getName():
                    self.myAgent.godine[igra.igraci[0].getName()] += igra.ukupni_rezultat[0]
                    self.myAgent.godine[igra.igraci[1].getName()] += igra.ukupni_rezultat[1]
                    self.myAgent.dodjeliProtivnika(True)

    def izvjesti(self):
        for key, value in sorted(self.godine.iteritems(), key=lambda (k, v):
        (v, k)):
            print "%s: %s: %s" % (key, value, self.strategije[key])

    def dodjeliProtivnika(self, pop):
        protivnici = self.igraci[self.aktualni_igrac]
        if pop:
            izbacen = protivnici.pop(0)
            print "Izbacen: " + izbacen.getName()
        if len(protivnici) == 0:
            self.igraci.pop(self.aktualni_igrac)  #izbacivanje
            if len(self.igraci) == 0:
                print "Gotovo"
                for igrac in self.zatvorenici:
                    self.sendMSG("Gotovo", igrac, "Rezultat")
                self.izvjesti()
                self._shutdown()
            keys = self.igraci.keys()
            self.aktualni_igrac = keys[0]
        protivnici = self.igraci[self.aktualni_igrac]
        igrac = self.igraci_pomocna[self.aktualni_igrac]
        igrac2 = protivnici[0]
        igra = Ispitivanje()
        igra.igraci.extend([igrac, igrac2])
        print igra.igraci[0].getName() + " protiv " + igra.igraci[1].getName(), "\n"
        self.cekaj()
        self.pocetakIgre(igra)

    def cekaj(self) :
        print "Ispitivanje pocinje za: "
        x = 3
        while x > 0:
            print x
            time.sleep(1)
            x -= 1
        print ""


    def pocetakIgre(self, igra):
        self.turnir.append(igra)
        self.mapa[igra.igraci[0].getName()] = self.turnir.index(igra)
        self.mapa[igra.igraci[1].getName()] = self.turnir.index(igra)
        self.sendMSG(igra.igraci[0].getName(), igra.igraci[1], "Protivnik")
        self.sendMSG(igra.igraci[1].getName(), igra.igraci[0], "Protivnik")

    def sendMSG(self, content, receiver, ontology):
        msg = ACLMessage()
        msg.addReceiver(receiver)
        msg.setOntology(ontology)
        msg.setContent(content)
        self.send(msg)

    def showTable(self):
        print "\t\t\t  Igrac 2"
        x = PrettyTable(["","Suradnja",  "Sukob", " "])
        x.padding_width = 1
        x.add_row(["Suradnja", "1,1","5,0", ""])
        x.add_row(["","","", "Igrac 1"])
        x.add_row(["Sukob", "0,5","3,3", ""])
        print x

    def inicijalizacija(self):
        self.opisnik = DfAgentDescription()
        self.opisnik.setAID(self.getAID())
        ou = ServiceDescription()
        ou.setName('Axelrodov turnir')
        ou.setType('Komunikacija')

        self.opisnik.addService(ou)
        self.registerService(self.opisnik)
        self.brojSudionika = int(brojPrijava)
        self.brojIteracija = int(brojIteracijaIgre)
        self.zatvorenici = []
        self.igraci = {}
        self.igraci_pomocna = {}
        self.strategije = {}
        self.godine = {}
        self.aktualni_igrac = None
        self.turnir = []
        self.mapa = {}
        self.matrica_placanja = {'SuradnjaSuradnja': [1, 1], 'SukobSuradnja': [0, 5], 'SuradnjaSukob': [5, 0], 'SukobSukob': [3, 3]}
        self.brojac = 0

    def postaviTemplate(self, ontologija):
        p = ACLTemplate()
        p.setOntology(ontologija)
        m = MessageTemplate(p)
        return m