SMAM2 is a package manager built specifically for SourceMod.

Overview

SourceMod Addon Manager 2 (SMAM2)

SMAM2 is a package manager built specifically for SourceMod.

This was heavily inspired by Phil25's SMAM. I thought the idea was great so I went ahead and rewrote it, improving on a few features and giving it some new features entirely.

There is currently not yet a "database" of plugins/extensions. For now, every addon is listed in the GitHub repo in a .json file. If you want to add your project/plugin/extension, just file a pull request.

Features

Multiple Server Management

SMAM2 can support managing multiple servers. This is useful for scalable server hosts with multiple servers on a single machine. Addons can be installed to each server all at once, or servers can be explicitly selected for individual installations.

Example:
[scag@localhost ~]$ smam add /home/tf2/tf -ntf2
Successfully created server 1 (tf2) with path "/home/tf2/tf".

[scag@localhost ~]$ smam add /home/csgo/csgo
Successfully created server 2 () with path "/home/csgo/csgo".

[scag@localhost ~]$ smam add /home/l4d/l4d2 -nl4d
Successfully created server 2 (l4d) with path "/home/l4d/l4d2".
[scag@localhost ~]$ smam install sourcemod1-11 metamod1-12
Successfully installed addon sourcemod1-11 to server 1 (tf2).
Successfully installed addon sourcemod1-11 to server 2 ().
Successfully installed addon sourcemod1-11 to server 3 (l4d).

Successfully installed addon metamod1-12 to server 1 (tf2).
Successfully installed addon metamod1-12 to server 2 ().
Successfully installed addon metamod1-12 to server 3 (l4d).

[scag@localhost ~]$ smam install tf2items -stf2
Successfully installed addon tf2items to server 1 (tf2).

[scag@localhost ~]$ smam install steamworks -s2,3
Successfully installed addon steamworks to server 2 ().
Successfully installed addon steamworks to server 3 (l4d).

[scag@localhost ~]$ smam install dhooks -s1-2
Successfully installed addon dhooks to server 1 (tf2).
Successfully installed addon dhooks to server 2 ().

[scag@localhost ~]$ smam remove steamworks -sl4d
Successfully removed addon steamworks from server 3 (l4d).

Scaled Server Deployment

SMAM2 can install several addons at once, including SourceMod and MetaMod. With a little elbow grease, you can create a script to automatically create and deploy a server with its own specified plugins.

Plugins also can have registered dependencies. VSH2 requires TF2Items, so it is automatically added to the installation queue.

pluginlist.txt

metamod1-12
sourcemod1-11
vsh2

install.sh

./build.sh
smam add /home/tf2hale/tf2hale/tf -n tf2hale
smam install -F pluginlist.txt

Configuration

Setting up addons in the main database is easily configurable. Each subkey in the .json file can differentiate between Windows, Linux, and Mac (Darwin) configurations.

Config can exclude files, prepend to file paths to configure installation directories, and include required and optionally required dependencies.

Each server installation data is set up in the user's home data directory, ~/.local/share/smam/ for Unix and C:\Users\ \AppData\Local\smam\ for Windows.

Installation

SMAM2 is OS independent and uses pip to install.

SMAM2 also requires the appdirs package i.e. pip3 install appdirs.

Windows

After running steamcmd to install server files...

C:\Users\johnm> git clone https://github.com/Scags/SMAM2.git
C:\Users\johnm> cd SMAM2
C:\Users\johnm\SMAM2> pip install . # OR you can execute 'py setup.py install'
C:\Users\johnm\SMAM2> smam add C:\path\to\game\dir -n my_server_name	# This is the game directory that holds the 'addons' folder (e.g. tf/csgo/l4d2/css)

You're done. You should be able to setup and configure your server(s) from here on.

Unix

After running steamcmd to install server files...

[scag@localhost ~]$ git clone https://github.com/Scags/SMAM2.git
[scag@localhost ~]$ cd SMAM2

You have 2 options from here.

If you run a single server or you have a single user running multiple servers, you would use:

[scag@localhost ~/SMAM2]$ pip3 install .

You may also need to add the local bin dir to PATH. This installs SMAM so that you won't need to escalate to manage a server, but if you are running servers under different users, SMAM will be confused if you try to run it under a different user than the one you installed with.

Otherwise, if you are running multiple servers on the same machine under different users, you may want to install to the /usr/bin directory as sudo. This would mean using:

[scag@localhost ~/SMAM2]$ sudo python3 setup.py install

From then on, you would have to run smam as root, but you would be able to harness SMAM's ability configure multiple servers at once.

Commands

Adding a server:

[scag@localhost ~]$ smam add -h
usage: smam add [-h] [-n NAME]

add a server to SMAM

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  name of the server being added

[scag@localhost ~]$ smam add path/to/serverdir

Dropping a server:

This does not remove any files

[scag@localhost ~]$ smam drop -h
usage: smam drop [-h]

drop server(s) from SMAM

optional arguments:
  -h, --help  show this help message and exit

[scag@localhost ~]$ smam drop 1
[scag@localhost ~]$ smam drop tf2hale
[scag@localhost ~]$ smam drop all

Installing an addon:

[scag@localhost ~]$ smam install -h
usage: smam [-h] [-s SERVERS] [-n] [-u] [-f] [-o] [-F FILE]

install a plugin/extension

optional arguments:
  -h, --help            show this help message and exit
  -s SERVERS, --servers SERVERS
                        server(s) to install to
  -n, --noconfig        ignore config files from installation
  -u, --upgrade         update addon to the latest version
  -f, --force           force installation regardless of preexisting files
  -o, --optional        install addon's optional packages
  -F FILE, --file FILE  read addons from a file

[scag@localhost ~]$ smam install tf2items
[scag@localhost ~]$ smam install -s 1 steamworks
[scag@localhost ~]$ smam install vsh2 -o
[scag@localhost ~]$ smam install sourcemod1-11 -nf -s 1-4
[scag@localhost ~]$ smam install -Fmyplugins.txt 1,4

Removing an addon:

[scag@localhost ~]$ smam remove -h
usage: smam [-h] [-s SERVERS] [-k]

remove a plugin/extension

optional arguments:
  -h, --help            show this help message and exit
  -s SERVERS, --servers SERVERS
                        server(s) to remove from
  -k, --keep            do not remove addon files

[scag@localhost ~]$ smam remove left4downtown -k
[scag@localhost ~]$ smam remove steamtools steamworks
[scag@localhost ~]$ smam remove all 

List servers and their addons:

[scag@localhost ~]$ smam list -h
usage: smam [-h] [-a]

list server(s) and their addons

optional arguments:
  -h, --help  show this help message and exit
  -a, --all   list content paths

[scag@localhost ~]$ smam list -a

Search for an addon:

[scag@localhost ~]$ smam search -h
usage: smam [-h]

search for an addon

optional arguments:
  -h, --help  show this help message and exit

[scag@localhost ~]$ smam search tf2
[scag@localhost ~]$ smam search sourcemod

List info for an addon:

[scag@localhost ~]$ smam info -h
usage: smam [-h]

list information for an addon

optional arguments:
  -h, --help  show this help message and exit

[scag@localhost ~]$ smam info tf2items

TODO

  • Allow complete server deletion.
  • Allow local addon database configurations
  • Improve argparse's command structure
You might also like...
Petit webhook manager by moi (wassim)

Webhook Manager By wassim oubliez pas de ⭐ le projet Installations il te faut python sinon quand tu va lancer le start.bat sa va tout installer tout s

ESOLinuxAddonManager - Very simple addon manager for Elder Scrolls Online running on Linux.

ESOLinuxAddonManager Very simple addon manager for Elder Scrolls Online running on Linux. Well, more a downloader for now. Currently it's quite ugly b

❤️ Hi There Im EzilaX ❤️ A next gen powerful telegram group manager bot 😱 for manage your groups and have fun with other cool modules Made By Sadew Jayasekara 🔥
❤️ Hi There Im EzilaX ❤️ A next gen powerful telegram group manager bot 😱 for manage your groups and have fun with other cool modules Made By Sadew Jayasekara 🔥

❤️ EzilaX v1 ❤️ Unmaintained. The new repo of @EzilaXBot is Public. (It is no longer based on this source code. The completely rewritten bot available

“Hey there 👋 I'm szrosebot .A Powerful, Smart And Simple Group Manager with some extra features..
“Hey there 👋 I'm szrosebot .A Powerful, Smart And Simple Group Manager with some extra features..

A Powerful, Smart And Simple Group Manager szrose bot This is the clone of DewmiBotit is a Powerful, Smart And Simple Group Manager bot made by hiruna

This is a Innexia Group Manager Bot with many features

⚡ Innexia ⚡ A Powerful, Smart And Simple Group Manager ... Written with AioGram , Pyrogram and Telethon... Available on Telegram as @Innexia ❤️ Suppor

❤️A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules
❤️A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules

Natsuki Based on Python Telegram Bot Contributors Video Tutorial: Complete guide on deploying @TheNatsukiBot's clone on Heroku. ☆ Video by Sadew Jayas

Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.
Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

A Powerful, Smart And Advance Group Manager ... Written with AioGram , Pyrogram and Telethon...
A Powerful, Smart And Advance Group Manager ... Written with AioGram , Pyrogram and Telethon...

❤️ Shadow ❤️ A Powerful, Smart And Advance Group Manager ... Written with AioGram , Pyrogram and Telethon... ⭐️ Thanks to everyone who starred Shadow,

Migration Manager (MM) is a very small utility that can list source servers in a target account and apply mass launch template modifications.

Migration Manager Migration Manager (MM) is a very small utility that can list source servers in a target account and apply mass launch template modif

Owner
John Mascagni
Developer; reverse engineering and blockchain enthusiast
John Mascagni
This is a straightforward python implementation to specifically grab basic infos about IPO companies in China from Sina Stock website.

SinaStockBasicInfoCollect This is a straightforward python implementation to specifically grab basic infos about IPO companies in China from Sina Stoc

CrosSea 1 Dec 9, 2021
The Social-Engineer Toolkit (SET) is specifically designed to perform advanced attacks against the human element.

The Social-Engineer Toolkit (SET) The Social-Engineer Toolkit (SET) is specifically designed to perform advanced attacks against the human element. SE

Professor 6 Nov 28, 2022
First Party data integration solution built for marketing teams to enable audience and conversion onboarding into Google Marketing products (Google Ads, Campaign Manager, Google Analytics).

Megalista Sample integration code for onboarding offline/CRM data from BigQuery as custom audiences or offline conversions in Google Ads, Google Analy

Google 76 Dec 29, 2022
One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind them.

AwesomeVersion One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind

Joakim Sørensen 39 Dec 31, 2022
Python Package For MTN Zambia Momo API. This package can also be used by MTN momo in other countries.

MTN MoMo API Lite Python Client Power your apps with Lite-Python MTN MoMo API Usage Installation Add the latest version of the library to your project

Mathews Musukuma 7 Jan 1, 2023
A minimalist file manager for those who want to use Linux mobile devices.

Portfolio A minimalist file manager for those who want to use Linux mobile devices. Usage Tap to activate and press to select, to browse, open, copy,

Martin Abente Lahaye 71 Nov 18, 2022
GTK3-based panel for sway window manager

nwg-panel I have been using sway since 2019 and find it the most comfortable working environment, but... Have you ever missed all the graphical bells

Piotr Miller 290 Jan 7, 2023
MashaRobot : New Generation Telegram Group Manager Bot (🔸Fast 🔸Python🔸Pyrogram 🔸Telethon 🔸Mongo db )

MashaRobot Me On Telegram ✨ MASHA ✨ This is just a demo bot.. Don't try to add to your group.. Create your own bot How To Host The easiest way to depl

Mr Dark Prince 40 Oct 9, 2022
A Telegram Message Manager Bot by @AbirHasan2005

Messages-Manager-Bot A Telegram Message Manager Bot by @AbirHasan2005. This Bot can delete specific type of messages from Group. I specially use for @

Abir Hasan 32 Nov 12, 2022
❤️ DaisyX 2.0 ❤️ A Powerful, Smart And Simple Group Manager ... Written with AioGram , Pyrogram and Telethon...

❤️ DaisyX 2.0 ❤️ A Powerful, Smart And Simple Group Manager ... Written with AioGram , Pyrogram and Telethon... ⭐️ Thanks to everyone who starred Dais

TeamOfDaisyX 44 Oct 6, 2022