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 )
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
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 )
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 )
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