Skip to content

oldcordapp/OldCordV3

Repository files navigation

Herple...

OldcordV3

Current code for Oldcord (Rewritten) as typescript sucks for this kinda project.

Resources & External Contributors

ziad87 (Hummus2 private source code for token generation, permissions, sessions references, and some middleware references)
discord.js (for snowflake)
unkn0w (for disposable email domain list)
Nebula Entertainment & Broadcasting LLC (for Nebula Sans — A drop in replacement for Whitney for the bootloader and build selector, which Discord used before 2022)

Important, read me!

Due to Oldcord's rapidly changing nature, there are some commits which may break your current database generated by the program.
Which is why, on future commits where the DB is changed in a significant way, we will add a short SQL query/queries you can run to update the database to work with the new wrapper on the commit description.
The server may also automatically run these migration scripts for you when you update your instance and restart it.

Also, if you created your Oldcord instance before November 14 (2024) and you are updating it, please make sure that your config.json file is also updated to the new format, or your instance will not work.

Setup

Download and setup a postgreSQL server with the database name of your choice. Download the config.json from the repository and modify the entries of your choice. Look below for a guide.

Run npm install to install all the packages required to run Oldcord and then node server.js to start Oldcord.

Since V3 is hosted on my own server at home, I use cloudflared to bypass CG-NAT and have enabled Cloudflare's free SSL so the SSL stuff in the earlier configuration is kinda deprecated.

custom_invite_url is used for invites in the app, putting "example.com" will make it so every invite made has the prefix example.com - much like discord.gg, etc.

There are Google Recaptcha v2 demo site & secret keys in the config example which you may find useful to look at when looking to enable recaptcha on your instance. If you'd like to not have recaptcha enabled, just set site_key and secret_key to "" (blank).
Also it is highly recommended you change those values if you do plan on using Recaptcha on production. Since it's a demo site key, all answers are valid.⚠️

integration_config is for the in-app connections under user settings, currently only Twitch is supported, and you need to make a Twitch application which gives you a client_secret to use this.

Example integration configuration:

"integration_config" : [{
        "platform" : "twitch",
        "client_id" : "client_id",
        "client_secret" : "client_secret",
        "redirect_uri" : "https://staging.oldcordapp.com/api/connections/twitch/callback"
}]

trusted_users bypass short term rate-limits, use this to add specific users like bots from being blocked by the wacky rate-limits scattered across the project.

instance.flags are kinda limited at the moment, but you can lock down an instance with these entries:

NO_REGISTRATION - Block all future users from creating an account on your instance.
NO_GUILD_CREATION - Block future guilds from being created.
NO_INVITE_USE - Block invites from being used.

More are to come with instance flags in the future.

The gcs_config section of the config.example.json is for the ability to auto-upload saved assets from the wayback machine for future use later.
It takes 2 properties, autoUploadBucket - which is the name of the bucket you want to automatically upload assets into, and gcStorageFolder (name of the folder within the bucket, i.e assets)

Here's an example Google Cloud Storage configuration:

"gcs_config" : {
   "autoUploadBucket" : "discord_assets_stuff",
   "gcStorageFolder" : "assets"
},

To setup Google Cloud Storage auto uploading, you need to download the Google Cloud SDK Shell and run these 2 commands to login and authorize your billing account for use in-applications:

gcloud auth login
gcloud auth application-default login

You might also need to configure CORS for your use of the bucket accordingly.

Project Support Outline

🟢 = Full Support
🟠 = Currently in development (or mostly supported, but not fully)
🔴 = Planned for development in the future
❎ = No plan for support in the future

2015 🟢
2016 🟢
2017 🟠
2018 🟠
2019 ❎ (As much as I'd like to say we'd fully support this year one day, the amount of telemetry, commercial crap, and bloatware - along with big crucial infrastructure changes which are hardly documented for the year just makes me lose faith in even getting a fraction of the gateway up to speed for this year)
2020+ ❎ (NOTE: This is not planned for support due to being when Discord became a shell of its former self)

About

rewrite

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7