Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
901127f784 | |||
dc4fd5afba | |||
a7ced10f92 | |||
9b9e009523 | |||
1819b6827a | |||
bd5b85f6b0 |
20
changelog.md
20
changelog.md
@ -1,5 +1,25 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-03-25 - 2.4.1 - fix(docs)
|
||||
Update readme with detailed legal and trademark guidance
|
||||
|
||||
- Clarified legal section by adding trademark and company information
|
||||
- Ensured users understand that licensing terms do not imply endorsement by the company
|
||||
|
||||
## 2025-03-25 - 2.4.0 - feat(installer)
|
||||
Add auto-yes flag to installer and update installation documentation
|
||||
|
||||
- Enhance install.sh to parse -y/--yes and -h/--help options, automating git installation when auto-yes is provided
|
||||
- Improve user prompts for dependency installation and provide clearer instructions
|
||||
- Update readme.md to document new installer options and enhanced file system and service changes details
|
||||
|
||||
## 2025-03-25 - 2.3.0 - feat(installer/cli)
|
||||
Add OS detection and git auto-installation support to install.sh and improve service setup prompt in CLI
|
||||
|
||||
- Implemented helper functions in install.sh to detect OS type and automatically install git if missing
|
||||
- Prompt user for git installation if not present before cloning the repository
|
||||
- Enhanced CLI service setup flow to offer starting the NUPST service immediately after installation
|
||||
|
||||
## 2025-03-25 - 2.2.0 - feat(cli)
|
||||
Add 'config' command to display current configuration and update CLI help
|
||||
|
||||
|
131
install.sh
131
install.sh
@ -2,7 +2,45 @@
|
||||
|
||||
# NUPST Installer Script
|
||||
# Downloads and installs NUPST globally on the system
|
||||
# Can be used directly with curl: curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||
# Can be used directly with curl:
|
||||
# Without auto-installing dependencies:
|
||||
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||
# With auto-installing dependencies:
|
||||
# curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
||||
#
|
||||
# Options:
|
||||
# -y, --yes Automatically answer yes to all prompts
|
||||
# -h, --help Show this help message
|
||||
|
||||
# Parse command line arguments
|
||||
AUTO_YES=0
|
||||
SHOW_HELP=0
|
||||
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
-y|--yes)
|
||||
AUTO_YES=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
SHOW_HELP=1
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
# Unknown option
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $SHOW_HELP -eq 1 ]; then
|
||||
echo "NUPST Installer Script"
|
||||
echo "Usage: $0 [options]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -y, --yes Automatically answer yes to all prompts"
|
||||
echo " -h, --help Show this help message"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check if running as root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
@ -17,6 +55,78 @@ if [ ! -t 0 ]; then
|
||||
PIPED=1
|
||||
fi
|
||||
|
||||
# Helper function to detect OS type
|
||||
detect_os() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS=$ID
|
||||
elif type lsb_release >/dev/null 2>&1; then
|
||||
OS=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
OS=$DISTRIB_ID
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
OS="debian"
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
if grep -q "CentOS" /etc/redhat-release; then
|
||||
OS="centos"
|
||||
elif grep -q "Fedora" /etc/redhat-release; then
|
||||
OS="fedora"
|
||||
else
|
||||
OS="rhel"
|
||||
fi
|
||||
else
|
||||
OS=$(uname -s)
|
||||
fi
|
||||
echo $OS
|
||||
}
|
||||
|
||||
# Helper function to install git
|
||||
install_git() {
|
||||
OS=$(detect_os)
|
||||
echo "Detected OS: $OS"
|
||||
|
||||
case "$OS" in
|
||||
ubuntu|debian|pop|mint|elementary|kali|zorin)
|
||||
echo "Installing git using apt..."
|
||||
apt-get update && apt-get install -y git
|
||||
;;
|
||||
fedora|rhel|centos|almalinux|rocky)
|
||||
echo "Installing git using dnf/yum..."
|
||||
if command -v dnf &> /dev/null; then
|
||||
dnf install -y git
|
||||
else
|
||||
yum install -y git
|
||||
fi
|
||||
;;
|
||||
arch|manjaro|endeavouros|garuda)
|
||||
echo "Installing git using pacman..."
|
||||
pacman -Sy --noconfirm git
|
||||
;;
|
||||
opensuse*|suse|sles)
|
||||
echo "Installing git using zypper..."
|
||||
zypper install -y git
|
||||
;;
|
||||
alpine)
|
||||
echo "Installing git using apk..."
|
||||
apk add git
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported OS: $OS"
|
||||
echo "Please install git manually and run the installer again."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if git was installed successfully
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "Failed to install git. Please install git manually and run the installer again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Git installed successfully."
|
||||
}
|
||||
|
||||
# Define installation directory
|
||||
INSTALL_DIR="/opt/nupst"
|
||||
REPO_URL="https://code.foss.global/serve.zone/nupst.git"
|
||||
@ -26,8 +136,23 @@ if [ $PIPED -eq 1 ]; then
|
||||
|
||||
# Check if git is installed
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "Git is required but not installed. Please install git first."
|
||||
exit 1
|
||||
echo "Git is required but not installed."
|
||||
|
||||
if [ $AUTO_YES -eq 1 ]; then
|
||||
echo "Auto-installing git (-y flag provided)..."
|
||||
install_git
|
||||
else
|
||||
read -p "Would you like to install git now? (y/N): " install_git_prompt
|
||||
|
||||
if [[ "$install_git_prompt" =~ ^[Yy]$ ]]; then
|
||||
install_git
|
||||
else
|
||||
echo "Git installation skipped. Please install git manually and run the installer again."
|
||||
echo "Alternatively, you can run the installer with -y flag to automatically install git:"
|
||||
echo " sudo bash install.sh -y"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if installation directory exists
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@serve.zone/nupst",
|
||||
"version": "2.2.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Node.js UPS Shutdown Tool for SNMP-enabled UPS devices",
|
||||
"main": "dist/index.js",
|
||||
"bin": {
|
||||
|
69
readme.md
69
readme.md
@ -21,6 +21,9 @@ NUPST is a command-line tool that monitors SNMP-enabled UPS devices and initiate
|
||||
```bash
|
||||
# Install directly without cloning the repository (requires root privileges)
|
||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash
|
||||
|
||||
# Install with auto-yes for dependencies (will install git automatically if needed)
|
||||
curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y
|
||||
```
|
||||
|
||||
### Direct from Git
|
||||
@ -33,20 +36,58 @@ cd nupst
|
||||
# Option 1: Quick install (requires root privileges)
|
||||
sudo ./install.sh
|
||||
|
||||
# Option 1a: Quick install with auto-yes for dependencies
|
||||
sudo ./install.sh -y
|
||||
|
||||
# Option 2: Manual setup
|
||||
./setup.sh
|
||||
sudo ln -s $(pwd)/bin/nupst /usr/local/bin/nupst
|
||||
```
|
||||
|
||||
### Installation Options
|
||||
|
||||
The installer script (`install.sh`) supports the following options:
|
||||
|
||||
```
|
||||
-y, --yes Automatically answer yes to all prompts (like installing git)
|
||||
-h, --help Show the help message
|
||||
```
|
||||
|
||||
### From NPM
|
||||
|
||||
```bash
|
||||
npm install -g @serve.zone/nupst
|
||||
```
|
||||
|
||||
## System Changes
|
||||
|
||||
When installed, NUPST makes the following changes to your system:
|
||||
|
||||
### File System Changes
|
||||
|
||||
| Path | Description |
|
||||
|------|-------------|
|
||||
| `/opt/nupst/` | Main installation directory containing the NUPST files |
|
||||
| `/etc/nupst/config.json` | Configuration file |
|
||||
| `/usr/local/bin/nupst` | Symlink to the NUPST executable |
|
||||
| `/etc/systemd/system/nupst.service` | Systemd service file (when enabled) |
|
||||
|
||||
### Service Changes
|
||||
|
||||
- Creates and enables a systemd service called `nupst.service` (when enabled with `nupst enable`)
|
||||
- The service runs with root permissions to allow system shutdown capabilities
|
||||
|
||||
### Network Access
|
||||
|
||||
- NUPST only communicates with your UPS device via SNMP (default port 161)
|
||||
- Brief connections to npmjs.org to check for updates
|
||||
|
||||
## Uninstallation
|
||||
|
||||
```bash
|
||||
# Using the CLI tool:
|
||||
sudo nupst uninstall
|
||||
|
||||
# If installed from git repository:
|
||||
cd /path/to/nupst
|
||||
sudo ./uninstall.sh
|
||||
@ -57,9 +98,10 @@ npm uninstall -g @serve.zone/nupst
|
||||
|
||||
The uninstaller will:
|
||||
- Stop and disable the systemd service (if installed)
|
||||
- Remove the systemd service file
|
||||
- Remove the symlink from /usr/local/bin
|
||||
- Optionally remove configuration files from /etc/nupst
|
||||
- Remove the systemd service file from `/etc/systemd/system/nupst.service`
|
||||
- Remove the symlink from `/usr/local/bin/nupst`
|
||||
- Optionally remove configuration files from `/etc/nupst/`
|
||||
- Remove the repository directory from `/opt/nupst/` (when using `nupst uninstall`)
|
||||
|
||||
## Usage
|
||||
|
||||
@ -76,7 +118,9 @@ Usage:
|
||||
nupst status - Show status of the systemd service and UPS status
|
||||
nupst setup - Run the interactive setup to configure SNMP settings
|
||||
nupst test - Test the current configuration by connecting to the UPS
|
||||
nupst config - Display the current configuration
|
||||
nupst update - Update NUPST from repository and refresh systemd service (requires root)
|
||||
nupst uninstall - Completely uninstall NUPST from the system (requires root)
|
||||
nupst help - Show this help message
|
||||
|
||||
Options:
|
||||
@ -208,6 +252,21 @@ NUPST was designed with security in mind:
|
||||
|
||||
The codebase is small, focused, and designed to be easily auditable. All code is open source and available for review.
|
||||
|
||||
## License
|
||||
## License and Legal Information
|
||||
|
||||
MIT
|
||||
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
|
||||
|
||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||
|
||||
### Trademarks
|
||||
|
||||
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
|
||||
|
||||
### Company Information
|
||||
|
||||
Task Venture Capital GmbH
|
||||
Registered at District court Bremen HRB 35230 HB, Germany
|
||||
|
||||
For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
|
||||
|
||||
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@serve.zone/nupst',
|
||||
version: '2.2.0',
|
||||
version: '2.4.1',
|
||||
description: 'Node.js UPS Shutdown Tool for SNMP-enabled UPS devices'
|
||||
}
|
||||
|
19
ts/cli.ts
19
ts/cli.ts
@ -834,7 +834,7 @@ Options:
|
||||
}
|
||||
|
||||
/**
|
||||
* Optionally enable systemd service
|
||||
* Optionally enable and start systemd service
|
||||
* @param prompt Function to prompt for user input
|
||||
*/
|
||||
private async optionallyEnableService(prompt: (question: string) => Promise<string>): Promise<void> {
|
||||
@ -843,8 +843,21 @@ Options:
|
||||
} else {
|
||||
const setupService = await prompt('Would you like to enable NUPST as a system service? (y/N): ');
|
||||
if (setupService.toLowerCase() === 'y') {
|
||||
await this.nupst.getSystemd().install();
|
||||
console.log('Service installed. Use "nupst start" to start the service.');
|
||||
try {
|
||||
await this.nupst.getSystemd().install();
|
||||
console.log('Service installed and enabled to start on boot.');
|
||||
|
||||
// Ask if the user wants to start the service now
|
||||
const startService = await prompt('Would you like to start the NUPST service now? (Y/n): ');
|
||||
if (startService.toLowerCase() !== 'n') {
|
||||
await this.nupst.getSystemd().start();
|
||||
console.log('NUPST service started successfully.');
|
||||
} else {
|
||||
console.log('Service not started. Use "nupst start" to start the service manually.');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Failed to setup service: ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user