Gå til innhold

[python] Msn over IRC bouncer


Anbefalte innlegg

Hei.

 

Først vil jeg si at jeg ikke har kommet på noe godt navn på programmet/scriptet enda, så om noen har noen gode forslag til navn på dette hadde det vært fint om dere ville komme med forslagene i kommentar tråden.

 

Kommentar tråd: https://www.diskusjon.no/index.php?showtopic=1246623

 

Hva er dette?

Dette vil være et python-script som jeg setter opp som er ment til å kunne kjøre på forskjellige servere, og vill fungere som en vanlig BNC for de av dere som er kjent med å bruke IRC, bare i dette tilfellet for MSN. Den skal og gjøre det mulig å kunne koble til MSN-kontoen sin med en hvilken som helst IRC-klient.

 

For de av dere som ikke er så kjent med IRC-verden vil dette bety et server-program som kjører på serveren og vil koble seg opp mot en eller flere MSN-kontoer, den vil alltid holde seg pålogget kontoen og logge alt som skjer på denne. For at den skal ha et bruktområde vil den samtidig åpne opp for at folk kan koble til denne serveren med IRC-klienter (en form for chatte-klient) slik at de gjennom et valgfritt program kan koble seg raskt og enkelt opp mot msn-kontoen sin. F.eks. kan man dermed chatte på MSN med f.eks. programmet mIRC som er en av de mest kjente IRC-klientene. Skulle du f.eks. være midt i en samtale og plutselig må logge av vil programmet loggføre alt som blir skrevet og du kan bare logge deg på senere og fortsette samtalen, og enkelt få med deg hva brukeren har skrevet i mellomtiden. Jeg vet at MSN allerede har støtte for offline-messages så nytteverdien i akkurat den biten er kanskje ikke så stor.

 

Hvorfor lager du dette?

Det er i hovedsak 2 grunner til at jeg starter med dette prosjektet:

1: Jeg sitter mye på IRC, og tenkte det hadde vært litt greit å kunne på MSN-samtalene mine inn i MSN-klienten min. Jeg vet allerede flere chatte-klienter støtter MSN og IRC, men har enda ikke funnet en klient jeg virkelig har likt som støtter begge, men har mange IRC-klienter jeg liker veldig godt.

2: Den største grunnen er at jeg holder på med å lære meg Python på et bedre nivå, og gjerne vil lære en del nettverksprogrammering. Denne oppgaven gir meg gode muligheter til å øke mine kunnskaper.

 

Hvordan vil dette gjennomføres?

Jeg tenkte først å dele oppgaven inn i 3 deler, hvor hver del skal være en klasse.

1: MSN-klient. En abstrakt klasse som kan koble til MSN sine sevrere og støtter MSN-messenger protokollen. Og som gjør det mulig å chatte over MSN

2: En IRC-server. Åpner opp mulighet for brukere til å koble til serveren og snakke med brukere som er på serveren.

3: MSN2IRC - en klasse som vil sette sammen disse 2 tjenestene. Slik at de som er pålogget på MSN-klienten vil bli overført som brukere på IRC-serveren. Og alt som bli sagt i en MSN-samtale vil komme som PM's på IRC. Senere vil jeg og gjøre det mulig å ha gruppesamtaler gjennom "channels" hvor du kan invitere folk til rommet for å snakke med de.

 

Vil det bli open source?

Enkelt og greit - JA!

 

----------------------------------------------

 

Oppdateringer:

28.07.2010 - 00:10 : Tilkobling til MSN-serveren er implementert

 

Filer:

http://www.sc2norge.com/etse/msn.py - klassen som styrer med MSN-protokollen

Endret av etse
Lenke til kommentar
Videoannonse
Annonse

Kan tipse om bitlbee som har akkurat denne støtten, du kan eventuelt kikke på de dersom du har problemer underveis. Selv benytter jeg irssi sammen med bitlbee og det fungerer utmerket. Virker som et spennende prosjekt, lykke til! Gleder meg til å kikke/prøve :)

Lenke til kommentar

den hadde jeg faktisk aldri hørt om, så jeg takker for tipset - er verd en titt. Akkurat nå holder jeg på å sette meg inn i MSN-protokollen og påloggingsprosedyren (mer presist ticketsystemet og hvordan løse challenge-string). Tror dette vil bli en både gøy og meget lærerik oppgave :)

Lenke til kommentar

Jeg har nå jobbet videre med programmet og fått til en fungerende tilkobling til MSN-serverene. Dette må ha vært en av de mer avanserte protokollene jeg har koblet til som inneholdt utfordringer med å få til å sende og motta informasjon gjennom HTTPS-protokollen. Heldigvis hadde python sitt standard-bibiliotek en god implementasjon av dette.

 

Scriptet kobler nå til med en valgfri passport, men har noen bugs som må fikses. F.eks. har jeg ikke så mange sjekker for om det skjer noen feil på veien slik at jeg kan gi brukeren en enkel og forstålig feilmelding. Videre består MSN-protokollen sin tilkobling en del av at den noen tilfeldige ganger midt under tilkoblingen kan henvise deg til en ny server. Slik den er nå anntar den at dette ikke skjer (noe det sjeldent gjør) men de få gangene det skjer vil den ikke klarer å koble til og scriptet stopper i stede. Å implementere en "forwarding" del i scriptet skal ikke være så vanskelig og er det neste på listen :)

 

Jeg blir meget glad for innspill, men siden jeg ikke har kommet så langt enda er det ikke så mye å gi kritikk på regner jeg med. Den har heller ingen nytteverdi da det eneste den gjør er å koble til å sette deg som "Tilgjengelig" på status. Å svare på "keep-alive-requests" er enda ikke implementert.

 

Filen:

http://www.sc2norge.com/etse/msn.py

Endret av etse
Lenke til kommentar

Jeg har desverre ikke fått gjort så alt for mye i det siste men jeg har jobbet litt videre og sett på "Challanges" og "switchserver". Challanges er MSN-protokollen sin versjon av ping-signaler, hvor i stede for for å sende normale pingsignaler sender deg en streng med tekst som skal "krypteres" i henhold til en bestemt algoritme og sendes tilbake. Meget tungvindt, og jeg forstår ikke hvorfor det er slik. Men ryktene har det til at det er ment for å holde 3-part programmvare utenfor men at algoritmen enten ble reverse-engineeret eller lekket av MS.

 

Jeg har i hvertfall fått implementert challange-algoritmen nå, så om man logger inn forblir man pålogget til man skrur det av. Jeg har og sett på switchserveren for å se hvordan man setter i gang samtaler. Dette ser ikke så veldig avansert ut, men har funnet ut jeg skal legge en til egen "conversation" klasse som styrer hver enkelt samtale.

 

Dette er i hvertfall et meget morsomt prosjekt da protokollen rører innom masse forskjellig. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...