aim-oscar-server/Readme.md
Artem Titoulenko b3bb06daca update readme
2022-01-22 13:28:14 -05:00

2.3 KiB

AIM Oscar Server

Run your own AIM chat server, managing users and groups. Hook up a vintage client and get chatty.

Goals

  • Have a vintage client authenticate with the server
  • Add buddies
  • See buddy online/away status
  • Chat with buddy
  • Set away status
  • See away status
  • Look up buddy
  • Buddy icons
  • Rate limiting + warn system
  • Web Signup (https://runningman.network/register)
  • Federation with other servers

Getting Started

Clone this repository, make sure you have Go installed in your terminal's path, then run:

$ go build && ./aim-oscar

Configuration

Environment flags:

  • OSCAR_HOST: host interface to bind to (default: 0.0.0.0)
  • OSCAR_PORT: port to bind to (default: 5190)
  • OSCAR_BOS_HOST: hostname of Basic OSCAR Service that provides core client features (default: 0.0.0.0)
  • OSCAR_BOS_PORT: port of Basic OSCAR Service (default: 5190)
  • DB_URL: URL of Postgres database to use
  • DB_USER: Username of the db user
  • DB_PASSWORD: Password of the db user

Flags:

  • -host: hostname of server
  • -port: port to bind to
  • -boshost: hostname of Basic OSCAR Service
  • -bosport: port of Basic OSCAR Service
  • -h: see help information about flags

Terms

mirrored from iserverd

  • BOS: Basic OSCAR Service. This term refers to the services that form the core of the Instant Messenger service. These services include Login/Logoff, Locate, Instant Message, Roster management, Info management and Buddy List
  • FLAP is a low-level communications protocol that facilitates the development of higher-level, record-oriented, communications layers. It is used on the TCP connection between all clients and servers.
  • SNAC: A SNAC is the basic communication unit that is exchanged between clients and servers. The SNAC communication layers sits on top of the FLAP layer.
  • TLV: Type Length Value. A tuple allowing typed opaque information to be passed through the protocol. Typically TLV's are intended for interpretation at the core layer. Being typed, new elements can be added w/o modifying the lower layers.
  • ICBM: Inter Client Basic Message. ICBM is a channelized client-to-client mechanism. Currently the most user visible channel is used for Instant Messages.