Server providing AIM services to old clients. Make your own chat network. Fuck Docker.
Find a file
2022-02-11 13:28:20 -05:00
aimerror change to User.ScreenName, check user verification 2022-01-16 14:43:48 -05:00
cmd/migrate db migrations 2022-02-11 13:28:01 -05:00
env db migrations 2022-02-11 13:28:01 -05:00
models remove fixtures 2022-01-22 20:31:47 -05:00
oscar fix offline status and adding buddies 2022-02-11 13:28:20 -05:00
scripts scripts to build and deploy to dockerhub 2021-12-24 14:51:54 -05:00
services fix offline status and adding buddies 2022-02-11 13:28:20 -05:00
util remove error-handling-via-panic 2022-02-03 14:06:33 -05:00
.dockerignore verify mod 2021-12-24 15:27:19 -05:00
.gitignore fix offline status and adding buddies 2022-02-11 13:28:20 -05:00
Dockerfile stop using sqlite db file 2022-01-16 16:39:44 -05:00
go.mod sqlite -> postgres 2021-12-26 14:01:55 -05:00
go.sum sqlite -> postgres 2021-12-26 14:01:55 -05:00
main.go db migrations 2022-02-11 13:28:01 -05:00
message_delivery_routine.go remove error-handling-via-panic 2022-02-03 14:06:33 -05:00
online_routine.go fix offline status and adding buddies 2022-02-11 13:28:20 -05:00
package-lock.json move service to services package 2021-12-24 12:43:40 -05:00
package.json change to User.ScreenName, check user verification 2022-01-16 14:43:48 -05:00
Readme.md db migrations 2022-02-11 13:28:01 -05:00
run.sh db migrations 2022-02-11 13:28:01 -05:00
service_manager.go move fix service manager 2021-12-24 12:44:40 -05:00
session_manager.go change to User.ScreenName, check user verification 2022-01-16 14:43:48 -05:00

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 and make sure you have Go installed in your terminal's path. Copy env/example.dev.env to env/dev.env and configure your database settings. OSCAR_BOS_HOST should be configured to your host's IP or address. In the example dev env it asks macOS what the host's address is but this should be changed if you're on Linux. Then you can run the run.sh script to get started.

$ ./run.sh

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.