• MRC chat protocol?

    From NuSkooler@10:101/9 to All on Tuesday, February 05, 2019 18:04:14
    Is there a document of the MRC protocol somewhere? I'm considering adding support (to non-Mystic of course).



    --- ENiGMA 1/2 v0.0.9-alpha (linux; x64; 10.13.0)
    * Origin: Xibalba -+- xibalba.l33t.codes:44510 (10:101/9)
  • From StackFault@10:102/3 to NuSkooler on Tuesday, February 05, 2019 22:40:27
    Is there a document of the MRC protocol somewhere? I'm considering adding support (to non-Mystic of course).

    Not yet and this will very likely change as I've already started doing work on the server portion but will have a protocol document done for
    interoperability with other BBS platforms. I think it would be nice to have.

    My goal is to keep it simple, no goal to replace IRC or anything.

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From Smooth@10:101/1 to NuSkooler on Tuesday, February 05, 2019 23:10:06
    On 02/05/19, NuSkooler inked down this thought...

    Is there a document of the MRC protocol somewhere? I'm considering adding support (to non-Mystic of course).

    That would be cool. If we can find out how to interface with the MRChat
    server from other bbs software types we could then have a central chat system for all araknet boards. :D

    |08---
    |10S|02mooth |15<|07<|08.|03F|11u|15el|03/|03P|11h|15enom|08.|07>|15> |10À|02Ä-úó®|14 bbs.|15INK|14two.com|02 ¯ò

    --- Mystic BBS v1.12 A39 2018/04/21 (Windows/32)
    * Origin: ARAKNET://INKTWO/where?=CovinaCA (10:101/1)
  • From Anachronist@10:101/20 to All on Wednesday, February 06, 2019 05:05:43

    That would be cool. If we can find out how to interface with the MRChat server from other bbs software types we could then have a central chat system
    for all araknet boards. :D

    This. I wouldn't mind taking a look at it for a possible C-NET mod. Talk about the Amiga and PC/Linux BBS world finally coming together!


    cdAnachronist cb| caLord of aBSiNTHE BBSq1

    --- CNet/5
    * Origin: aBSiNTHE BBS absinthebbs.net:1940 (10:101/20)
  • From NuSkooler@10:101/9 to StackFault on Wednesday, February 06, 2019 09:54:58

    On Tuesday, February 5th StackFault muttered...
    Not yet and this will very likely change as I've already started doing work on the server portion but will have a protocol document done for interoperability with other BBS platforms. I think it would be nice to have.

    Hmmm, if there isn't already a solid protocol definition, I'd suggest a RFC style approach here.


    --- ENiGMA 1/2 v0.0.9-alpha (linux; x64; 10.13.0)
    * Origin: Xibalba -+- xibalba.l33t.codes:44510 (10:101/9)
  • From Smooth@10:101/1 to Anachronist on Wednesday, February 06, 2019 13:20:56
    On 02/06/19, Anachronist inked down this thought...
    This. I wouldn't mind taking a look at it for a possible C-NET mod. Talk about the Amiga and PC/Linux BBS world finally coming together!

    If we could make this happen, we could have a GENERAL spot to chat in from
    our boards. :D

    |08---
    |10S|02mooth |15<|07<|08.|03F|11u|15el|03/|03P|11h|15enom|08.|07>|15> |10À|02Ä-úó®|14 bbs.|15INK|14two.com|02 ¯ò

    --- Mystic BBS v1.12 A39 2018/04/21 (Windows/32)
    * Origin: ARAKNET://INKTWO/where?=CovinaCA (10:101/1)
  • From StackFault@10:102/3 to NuSkooler on Wednesday, February 06, 2019 16:49:46
    Hmmm, if there isn't already a solid protocol definition, I'd suggest a RFC style approach here.

    There isn't.

    Maybe using XMPP or something similar may be a good idea, but this is a whole new project without any ties whatsoever to the existing one.

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From StackFault@10:102/3 to NuSkooler on Wednesday, February 06, 2019 16:58:38
    Hmmm, if there isn't already a solid protocol definition, I'd suggest a RFC style approach here.

    Let's RFC here shall we...

    Requesting your comment on what whould be part of the new BBS communication platform.

    I don't think it should be that feature-full, super simple to implement.

    Basic features like MRC right now with some small adjustments but not a lot more. Otherwise, there is no need to do something we can just use IRC and be done with it. I would add encryption however and some kind of authentication control for the BBSes.

    Throw your ideas!

    :)

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From NuSkooler@10:101/9 to StackFault on Wednesday, February 06, 2019 20:13:22

    On Wednesday, February 6th StackFault muttered...
    I don't think it should be that feature-full, super simple to implement.

    Agree -- ideally possible to implement on retro systems.

    StackFault around Wednesday, February 6th...
    Basic features like MRC right now with some small adjustments but not a lot more. Otherwise, there is no need to do something we can just use IRC and be done with it. I would add encryption however and some kind of authentication control for the BBSes.

    General thoughts without much thinking:
    - Encryption is a must
    - Basic channel concept ('global' being the default / what most would probably use?)
    - boardTag:userName type uniqueness

    What kind of BBS auth you thinking?

    Are there good reasons to not just build on top of e.g. Discord APIs? I suppose
    Discord could go away one day, but I don't see that in the any near future -- and people would probably dupe server APIs/support if they did (assuming that hasn't yet already been done)



    --- ENiGMA 1/2 v0.0.9-alpha (linux; x64; 10.13.0)
    * Origin: Xibalba -+- xibalba.l33t.codes:44510 (10:101/9)
  • From StackFault@10:102/3 to NuSkooler on Wednesday, February 06, 2019 22:38:51
    I don't think it should be that feature-full, super simple to impleme

    Agree -- ideally possible to implement on retro systems.

    Yes, totally!

    StackFault around Wednesday, February 6th...
    Basic features like MRC right now with some small adjustments but not lot more. Otherwise, there is no need to do something we can just use and be done with it. I would add encryption however and some kind of authentication control for the BBSes.

    General thoughts without much thinking:
    - Encryption is a must

    Agreed!

    - Basic channel concept ('global' being the default / what most would probably use?)

    Agreed!

    - boardTag:userName type uniqueness

    What kind of BBS auth you thinking?

    Authenticate the connection between the server and the board. Then everything flows in between. Another thing I'd like to see implemented is the concept of server clusters and load balancing to ensure high availability and connection distribution.

    Are there good reasons to not just build on top of e.g. Discord APIs? I suppose Discord could go away one day, but I don't see that in the any near future -- and people would probably dupe server APIs/support if
    they did (assuming that hasn't yet already been done)

    Well, there is many possibilities. I'd prefer a completely open standard however. Don't know specifically about Discord on the other hand.

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From Anachronist@10:101/20 to All on Thursday, February 07, 2019 04:03:51


    I don't think it should be that feature-full, super simple to
    implement.

    Agree -- ideally possible to implement on retro systems.

    Cosigned. ;)


    cdAnachronist cb| caLord of aBSiNTHE BBSq1


    z0cA.z0cFz0cA------------------------------------------------------------ ----------------.z0
    z0cA|z0cD Bill Clinton: the Milli Vanilli of presidents
    z0cA|z0 z0cA`------------------------------------------------------------------------ ----'z0

    --- CNet/5
    * Origin: aBSiNTHE BBS absinthebbs.net:1940 (10:101/20)
  • From NuSkooler@10:101/9 to StackFault on Thursday, February 07, 2019 19:34:29

    Twas Wednesday, February 6th when StackFault said...
    Authenticate the connection between the server and the board. Then everything flows in between.

    Definitely.

    StackFault around Wednesday, February 6th...
    Another thing I'd like to see implemented is
    the concept of server clusters and load balancing to ensure high availability and connection distribution.

    HA I agree with (see below), but I imagine a RPi3 can easily support a "large" chat server.

    On Wednesday, February 6th StackFault said...
    Well, there is many possibilities. I'd prefer a completely open standard however. Don't know specifically about Discord on the other hand.

    I'd like open as well, but am weary of self hosted without entering the realm of mesh/distributed which drastically complicates things. I hate seeing servers
    (especially common in the case of BBSing) pop out of existence. Everyone says they'll keep a server up; no one ever does :D

    On protocol basics:
    - JSON is always a nice goto but /might/ be harder to implement in older languages/systems. I'd hate to restrict if no one ever does though.
    - JWT is great for auth, but similar issues (well one being that it's JSON based)
    - Encryption as a must, yet this can be hard to implement on older systems as well; Consider tring to calc even SHA-1 on older hardware; I've seen it done, bit it takes ages. Yet, things that are easy to implement are weak.








    --- ENiGMA 1/2 v0.0.9-alpha (linux; x64; 10.13.0)
    * Origin: Xibalba -+- xibalba.l33t.codes:44510 (10:101/9)
  • From NuSkooler@10:101/9 to StackFault on Thursday, February 07, 2019 20:15:23

    On Wednesday, February 6th StackFault said...
    Throw your ideas!

    Thinking more RE retro systems and security: I think this may be impossible to *fully* implement, actully.

    Consider a 6510 8-bit processor: Modern security is simply a no-go here. While you could technically compute, things would literally take days (weeks?) that take ns/ms on modern CPUs with e.g. SHA extentions.

    Perhaps clients (e.g. boards connecting to the server) could be pre-determined as to if they require security or not + an opt-in system for channel(s) that are allowed to be broadcast to non-secure clients. Secure clients get all the beef; non-secure clients may have some.

    or TL;DR: Channels have a security pref default to 'required'; If 'optional', non-secure clients can interact with them.

    More protocol talk:
    Perhaps the protocol should be binary such that it is easier / faster to parse on older systems. JSON is nice and all, but parsing it sucks, especially if you
    have to write a library and can't load full document into memory easily :)





    --- ENiGMA 1/2 v0.0.9-alpha (linux; x64; 10.13.0)
    * Origin: Xibalba -+- xibalba.l33t.codes:44510 (10:101/9)
  • From StackFault@10:102/3 to NuSkooler on Thursday, February 07, 2019 22:35:08
    StackFault around Wednesday, February 6th...
    Another thing I'd like to see implemented is
    the concept of server clusters and load balancing to ensure high availability and connection distribution.

    HA I agree with (see below), but I imagine a RPi3 can easily support a "large" chat server.

    Yes, this is not really for performance but in case of network issue or something similar.

    On Wednesday, February 6th StackFault said...
    Well, there is many possibilities. I'd prefer a completely open stand however. Don't know specifically about Discord on the other hand.

    I'd like open as well, but am weary of self hosted without entering the realm of mesh/distributed which drastically complicates things. I hate seeing servers (especially common in the case of BBSing) pop out of existence. Everyone says they'll keep a server up; no one ever does :D

    Yeah, I think I might be able to implement a replication protocol to be able
    to run the server on multiple hosts and set a round-robin connection handler. Ditching the shell script loop altogether and handle to reconnection directly in the client.

    I will write a little something to bounce the idea.

    On protocol basics:
    - JSON is always a nice goto but /might/ be harder to implement in older languages/systems. I'd hate to restrict if no one ever does though.
    - JWT is great for auth, but similar issues (well one being that it's
    JSON based)
    - Encryption as a must, yet this can be hard to implement on older
    systems as well; Consider tring to calc even SHA-1 on older hardware;
    I've seen it done, bit it takes ages. Yet, things that are easy to implement are weak.

    Yes, encryption can be a challenge. Do we have a list of what can be
    available on the older platforms?

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From StackFault@10:102/3 to NuSkooler on Thursday, February 07, 2019 22:43:26
    On Wednesday, February 6th StackFault said...
    Throw your ideas!

    Thinking more RE retro systems and security: I think this may be impossible to *fully* implement, actully.

    Consider a 6510 8-bit processor: Modern security is simply a no-go here. While you could technically compute, things would literally take days (weeks?) that take ns/ms on modern CPUs with e.g. SHA extentions.

    True

    Perhaps clients (e.g. boards connecting to the server) could be pre-determined as to if they require security or not + an opt-in system for channel(s) that are allowed to be broadcast to non-secure clients. Secure clients get all the beef; non-secure clients may have some.

    or TL;DR: Channels have a security pref default to 'required'; If 'optional', non-secure clients can interact with them.

    I could have the server listen on two ports, one with SSL the other without. Implementing channel modes could be an option definitely. Currently the server runs in full broadcast mode and it's the client who decide if the message is displayed or not, this will change and the message will be sent only where it needs to.

    More protocol talk:
    Perhaps the protocol should be binary such that it is easier / faster to parse on older systems. JSON is nice and all, but parsing it sucks, especially if you have to write a library and can't load full document into memory easily :)

    This is not a bad idea at all and fairly easy to implement, adding some compression could be enough instead of going full blown encrypted. This is
    not to be considered a secure channel anyway.

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A39 2018/04/21 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From K-Guide@10:101/20 to Stackfault on Sunday, February 10, 2019 00:42:43
    Anachronist and I were talking about this project as I will be working to create a C-Net client so that C-Net users can join in the chat rooms.

    Here are a few of my initial thoughts:

    You might want to consider adding some form of version system for the packets. You don't need to change the packet structure as the client should only really support one particular version (the one it was coded with).

    During the handshake the client can notify the server what version of packets it supports. That way the server can support multiple versions of packets so you can maintain compatibility at the server level to various levels clients
    as you implement newer features in the server.

    Also, I am not sure about other systems, but forcing a space in the handle to be changed to an underscore "_" and back again may cause problems for any system that allows an underscore in the Handles. This is not a problem for C-Net as it does not allow that, but could for other platforms. You might want
    to consider a non-printable character code as this will be code controlled so the actual character does not matter. If not then you may want to consider some form of escape character to allow "_" in the handle.

    [+] K-Guide
    --- CNet/5
    * Origin: aBSiNTHE BBS absinthebbs.net:1940 (10:101/20)
  • From StackFault@10:102/3 to K-Guide on Sunday, February 10, 2019 07:00:34
    Anachronist and I were talking about this project as I will be working to create a C-Net client so that C-Net users can join in the chat rooms.

    Here are a few of my initial thoughts:

    You might want to consider adding some form of version system for the packets. You don't need to change the packet structure as the client should only really support one particular version (the one it was coded with).

    Yes, this is already in the doc, just need to upload that revised version up.


    During the handshake the client can notify the server what version of packets it supports. That way the server can support multiple versions
    of packets so you can maintain compatibility at the server level to various levels clients as you implement newer features in the server.

    Agreed

    Also, I am not sure about other systems, but forcing a space in the
    handle to be changed to an underscore "_" and back again may cause problems for any system that allows an underscore in the Handles. This
    is not a problem for C-Net as it does not allow that, but could for
    other platforms. You might want to consider a non-printable character code as this will be code controlled so the actual character does not matter. If not then you may want to consider some form of escape character to allow "_" in the handle.

    With the version checking in place, this will be easier to handle. This is definitely something that will add flexibility. There will be additional
    server commands in that next version of the document too. Nothing that
    changes the structure however.

    Thanks for your comments.

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A42 2019/02/01 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From StackFault@10:102/3 to K-Guide on Sunday, February 10, 2019 10:26:42
    Hi,

    I've just updated the protocol draft in DropBox with the changes I had made
    and also included the spaces placeholder you proposed for the handle (vert valid point, even for Mystic)

    I've also added the cross-platform transcoder I wanted to do if we go cross-platform. For now I thought of PIPE codes and Amiga ^Y, the way I plan
    on doing the transcoder it's just gonna be a dictionary for the transcoding
    and it should be painless to add other encodings and passing a from/to.

    If the agent connects and provides it's platform, the transcoder will make
    it's best the agent can read what's being sent to him (mostly) :)

    Cheers!

    |15 ß Þ |15StackFault |08<|03.|11.|15P|11h|03EN|11o|15M|11.|03.|08>
    |11 Ý ß |11The Bottomless Abyss BBS
    |03 ß Ýß |03ssh|08.|072222 |08/ |03telnet|08.|072023 |08/ |03https
    |08 ÜþÞ |08bbs|07.|08bottomlessabyss|07.|08net

    --- Mystic BBS v1.12 A42 2019/02/01 (Linux/64)
    * Origin: The Bottomless Abyss BBS * bbs.bottomlessabyss.net (10:102/3)
  • From Anachronist@10:101/20 to Stackfault on Monday, February 11, 2019 01:07:31

    I've also added the cross-platform transcoder I wanted to do if we go cross-platform. For now I thought of PIPE codes and Amiga ^Y, the way I
    plan

    Oh nice! This is going to be great.

    I've just updated the protocol draft in DropBox with the changes I had
    made
    and also included the spaces placeholder you proposed for the handle (vert valid point, even for Mystic)

    Great- grabbing it now :)


    cdAnachronist cb| caLord of aBSiNTHE BBSq1

    --- CNet/5
    * Origin: aBSiNTHE BBS absinthebbs.net:1940 (10:101/20)