Skip to content

Schlafhase/CactusMessenger

Repository files navigation

Chat on Discord Contributors

What is Cactus Messenger?

Cactus Messenger is a free and open-source messenger written in ASP.NET Blazor. I started working on it in April 2024 and I am developing it to gain experience. It has also become a kind of insider in my friend group.

How to use it?

Using my instance

You can apply for an account but I usually only allow people I know to create accounts to prevent spam.

Update: Demo Accounts

You can now also create a demo account. These accounts can only send up to 15 messages and will be deleted (including all sent messages and created channels) after 15 minutes. I know that you can still abuse this to spam the database so I have to rely on you not spamming. Thank you :)

Hosting your own instance

First you will need to download my LocalDB and place the folder in the parent directory of this repo. So for example let's say you have put this repo into a folder called Cactus

Cactus/CactusMessenger

then you will need to put the Acornbrot.LocalDB folder into the same parent directory

Cactus/Acornbrot.LocalDB

Local

You can host the Messenger using my local database (it's very bad and inefficient but I'll replace it with SQL or MongoDB in the future). You can do this by either making sure you are in a development environment or by replacing the lines 71-96 of CactusFrontEnd/Program.cs

if (isDevelopment)
{
	...
}
else
{
	...
}

with

if (!Path.Exists(CactusConstants.LocalDbRoot))
{
  Directory.CreateDirectory(CactusConstants.LocalDbRoot);
}

builder.Services.AddSingleton<IRepository<Account>>(_ => new LocalAccountRepository(CactusConstants.LocalDbRoot));
builder.Services.AddSingleton<IRepository<Channel>>(_ => new LocalChannelRepository(CactusConstants.LocalDbRoot));
builder.Services.AddSingleton<IRepository<Message>>(_ => new LocalMessageRepository(CactusConstants.LocalDbRoot));
builder.Services.AddSingleton<IRepository<CleanUpData>>(
  _ => new LocalCleanUpDataRepository(CactusConstants.LocalDbRoot));
builder.Services.AddSingleton<IRepository<PaymentManager>>(_ => new LocalPaymentRepo(CactusConstants.LocalDbRoot));
builder.Services.AddSingleton<IDiscordService, LocalDiscordService>();
builder.Services.AddSingleton<IEmailService, LocalEmailService>();

CosmosDB

You can also try to host an own instance of the messenger by cloning the repo and setting up your own CosmosDB for it. You will need to add the following files to the project:

  • email.password - This file contains an app password for your email. (You can also try to remove the email service from the project)
  • db.password - Your CosmosDB key
  • bottoken.password - Your discord bots token (Again, you can also try to remove the discord bot from the project)
  • And finally privateKey.privkey and publicKey.pubkey - These two files contain a valid RSA key pair

Contribute

There are a lot of bugs in Cactus Messenger so if you find some, feel free to open an issue or submit a pull request. You can also contact me if you'd like to discuss about this project (or anything else).

Releases

No releases published

Packages

 
 
 

Contributors