Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
just another really vigilant infrastructure sysadmin
Perl Ruby Shell
branch: master

Merge pull request #20 from websages/🎉giants🎉

Add giants to the list in !standings
latest commit 542f3dda8c
@azizshamim azizshamim authored
Failed to load latest commit information.
bin
config looping
cpan
etc/personas.d cmdb integration to jarvis
legacy_bots Adding stock support.
lib why the fuck not? they are pretty amazing
persona.d/templates putting the personality data in universal
t looping
tmp permission fixes
.gitignore adding the dependency fetcher
INSTALL removed references to squeeze from INSTALL
README looking at splitting out the bot configs
build.deps.debian importing the jabber error contstants that were removed from the vers…
commit_loop looping
doit adding a test loop
get_dependencies new dependency list
jarvis cmdb integration to jarvis
jarvis.dia shmocumentation
makefile universal init script modifications
perl-dependencies allow commas in urls
perl-dependencies.debian
redeploy adding redeploy script for wd loopz
test_ldap.pl Insufficient Access errors
universal.pl use local::lib

README

jarvis:
   uses POE::Builder to create 3 sessions:
       Jarvis::Persona::System (alias: system)
       Jarvis::IRC             (alias: ${hostname}_irc)  & passed 'system alias'
       Jarvis::Jabber          (alias: ${hostname}_xmpp) & passed 'system alias'

POE::Builder:
    new            => checks must, may for POE::Builder
    must           => [ loads list of mandatory args to module  ]
    may            => { hash of optional_args => defaults }
    indented_yaml  => un-indents yaml
    yaml_sess      => takes (indented) yaml, passes it to indented_yaml,
                      instantiates the class, passes to object_session
    object_session => creates a POE::Session around the object
                      adding the object_states from the method of the
                      same name from the object, sets aliases


Jarvis::Persona::System:
    connects to irc@127.0.0.1 as $(hosntame -s) joins #asgard
    connects to xmpp:$(hostname -f):5222 joins asgard\@conference.$(domainname)


   has 3 "known_personas" [ "crunchy", "berry", "jarvis" ] it can spawn
   when "spawn crunchy" is typed (in either irc:#asgard or xmpp:asgard)

       crunchy: Jarvis::Persona::Crunchy (our general purpose bot)
                connects to irc @127.0.0.1 joins #soggies

       berry: Jarvis::Persona::Crunchy (we use berry to test crunchy)
              connects to irc @127.0.0.1 joins #soggies

      jarvis: Jarvis::Persona::Jarvis (our Systems Administrator)
              connects to irc @127.0.0.1 joins #heathsmom


From that point on, events recieved by the personality's irc/xmmpp modules are
sent to the personality module, and responses are routed back to the requesting
module.

The interfaces between the protocol sessions and the personality sessions are
far from normalized, as there are some things that irc can do that xmpp doesn't
and vice-versa. I'm still working on a permanent API for connector-persona
communication.

Most of the communication is done in Jarvis::Persona::Base which is the parent
class for the bots themselves. The bots need only have a POE method named
"input" as that is what the connectors send input to, and resulting output 
should be sent back to the @_[SENDER]'s alias.

See: lib/Jarvis/Persona/Minimal.pm for a skeleton.
Something went wrong with that request. Please try again.