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:
[[email protected] ~]$ smam add /home/tf2/tf -ntf2
Successfully created server 1 (tf2) with path "/home/tf2/tf".

[[email protected] ~]$ smam add /home/csgo/csgo
Successfully created server 2 () with path "/home/csgo/csgo".

[[email protected] ~]$ smam add /home/l4d/l4d2 -nl4d
Successfully created server 2 (l4d) with path "/home/l4d/l4d2".
[[email protected] ~]$ 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).

[[email protected] ~]$ smam install tf2items -stf2
Successfully installed addon tf2items to server 1 (tf2).

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

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

[[email protected] ~]$ 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...

[[email protected] ~]$ git clone https://github.com/Scags/SMAM2.git
[[email protected] ~]$ 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:

[[email protected] ~/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:

[[email protected] ~/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:

[[email protected] ~]$ 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

[[email protected] ~]$ smam add path/to/serverdir

Dropping a server:

This does not remove any files

[[email protected] ~]$ smam drop -h
usage: smam drop [-h]

drop server(s) from SMAM

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

[[email protected] ~]$ smam drop 1
[[email protected] ~]$ smam drop tf2hale
[[email protected] ~]$ smam drop all

Installing an addon:

[[email protected] ~]$ 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

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

Removing an addon:

[[email protected] ~]$ 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

[[email protected] ~]$ smam remove left4downtown -k
[[email protected] ~]$ smam remove steamtools steamworks
[[email protected] ~]$ smam remove all 

List servers and their addons:

[[email protected] ~]$ 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

[[email protected] ~]$ smam list -a

Search for an addon:

[[email protected] ~]$ smam search -h
usage: smam [-h]

search for an addon

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

[[email protected] ~]$ smam search tf2
[[email protected] ~]$ smam search sourcemod

List info for an addon:

[[email protected] ~]$ smam info -h
usage: smam [-h]

list information for an addon

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

[[email protected] ~]$ 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
A small Python app to create Notion pages from Jira issues

Jira to Notion This little program will capture a Jira issue and create a corresponding Notion subpage. Mac users can fetch the current issue from the

Dr. Kerem Koseoglu 12 Oct 27, 2022
Unencrypted Story View Botter is a helpful tool that allows thousands of people to watch your posts.

Unencrypted Story View Botter is a helpful tool that allows thousands of people to watch your posts.

8 Aug 05, 2022
Ini Hanya Shortcut Untuk Menambahkan Kunci Tambahan Pada Termux & Membantu Para Nub Yang Decode Script Orang:v

Ini Hanya Shortcut Untuk Menambahkan Kunci Tambahan Pada Termux & Membantu Para Nub Yang Decode Script Orang:v

Lord_Ammar 1 Jan 23, 2022
Module to use some statistics from Spotify API

statify Module to use some statistics from Spotify API To use it you have to import the functions into your own project. You have also to authenticate

Miguel Cózar 2 Jun 02, 2022
A qq bot based on nonebot2 and go-cqhttp

Asoul-bot A qq bot based on nonebot and go-cqhttp 你可以将bot部署在本地,也可以加入bot测试群:784280070(全体禁言) 你可以通过临时会话的方式向bot发送指令,输入help获取帮助菜单 本地部署请参考:https://zhuanlan.

11 Sep 23, 2022
A Bot To remove forwarded messages

Forward-Mess-Remover A Bot To remove forwarded messages. uses Remove forwarded messages from Group. Deploy To Heroku

SpamShield 5 Oct 14, 2022
C Y B Ξ R UserBot is a project that simplifies the use of Telegram.

C Y B Ξ R USΞRBOT 🇦🇿 C Y B Ξ R UserBot is a project that simplifies the use of Telegram. All rights reserved. Automatic Setup Android: open Termux p

FVREED 4 Dec 07, 2022
Nasdaq Cloud Data Service (NCDS) provides a modern and efficient method of delivery for realtime exchange data and other financial information. This repository provides an SDK for developing applications to access the NCDS.

Nasdaq Cloud Data Service (NCDS) Nasdaq Cloud Data Service (NCDS) provides a modern and efficient method of delivery for realtime exchange data and ot

Nasdaq 8 Dec 01, 2022
User-Bot for reporting russian propaganda channels

Юзер-Бот, що автоматизує репортування Телеграм каналів пропагандистів Цей Телеграм Юзер-Бот використовується для автоматизації репорту пропагандистьск

58 Nov 07, 2022
修改自SharpNoPSExec的基于python的横移工具 A Lateral Movement Tool Learned From SharpNoPSExec -- Twitter: @juliourena

PyNoPSExec A Lateral Movement Tool Learned From SharpNoPSExec -- Twitter: @juliourena 根据@juliourena大神的SharpNOPsExec项目改写的横向移动工具 Platform(平台): Windows 1

<a href=[email protected]"> 23 Nov 09, 2022
It is a useful project for developers that includes useful tools for Instagram

InstagramIG It is a useful project for developers that includes useful tools for Instagram Installation : pip install InstagramIG Logan Usage from In

Sidra ELEzz 14 Mar 14, 2022
Discord Mass Edit is a unique, purging related Discord tool that differs from the regular mass delete.

Discord Mass Edit is a unique, purging related Discord tool that differs from the regular mass delete. This tool will automatically edit every message in a chosen channel and change it to a random st

c0mpt0 1 Jul 27, 2022
Asynchronous RDP/VNC client for Python (GUI)

🚩 This is the public repository of aardwolf, for latest version and updates please consider supporting us through https://porchetta.industries/ AARDW

29 Dec 15, 2022
42-event-notifier - 42 Event notifier using 42API and Github Actions

42 Event Notifier 42서울 Agenda에 새로운 이벤트가 등록되면 알려드립니다! 현재는 Github Issue로 등록되므로 상단

6 May 16, 2022
Easy & powerful bot to check if your all Telegram bots are working or not. This bot status bot updates every 45 minutes & runs for 24x7 hours.

PowerfulBotStatus-IDN-C-X Easy & powerful bot to check if your all Telegram bots are working or not. This bot status bot updates every 45 minutes & ru

IDNCoderX 5 Oct 06, 2022
This is a simple bot for running Python code through Discord

Python Code Runner Discord Bot This is a simple bot for running Python code through Discord. It was originally developed for the Beginner.Codes Discor

beginner.py 1 Feb 14, 2022
Kang Sticker bot

Kang Sticker Bot A simple Telegram bot which creates sticker packs from other stickers, images, documents and URLs. Based on kangbot Deploy Credits: s

Hafitz Setya 11 Jan 02, 2023
Um painel de consultas completo, com metodos atualizados.

Meu pix para eu comprar um café :D "25ef499b-d184-4aa1-9797-0a294be40d83" Painel-de-Consultas Completo. Feito por JOESTAR-TEAM Painel de consultas Com

Dio brando 10 Nov 19, 2021
Der Dischkort Bot für Andiismus

AndreOS Der Dischkort Bot für Andiismus Wichtigger Bot für den hauseigenen Discord-Server Indoktrinationsmechanismusleitungsprogramm der andiistischen

Leon Bartle 3 Jan 13, 2022
Discord bot code to stop users that are scamming with fake messages of free discord nitro on servers in order to steal users accounts.

AntiScam Discord bot code to stop users that are scamming with fake messages of free discord nitro on servers in order to steal users accounts. How to

H3cJP 94 Dec 15, 2022