3.7 KiB
3.7 KiB
Scientific Surfing
A CLI for surfing the internet scientifically, written in Go.
Features
- Clash RSS Subscription Support: Download and transform clash rss subscriptions
- Hook System: Customizable scripts for extending functionality
- Core Configuration Management: Import, export, and manage core configurations
- Binary Management: Automatic updates for core (mihomo) components
- Service Management: Install/start/stop/reload mihomo as a system service on Linux (systemd), macOS (launchd), and Windows (native Service Control Manager)
Installation
1. Clone and build
git clone ssh://git@gitea.epss.net.cn:2223/klesh/ss.git
cd ss
go build -o ssm ./cmd/ssm
This produces a single ssm (or ssm.exe on Windows) binary with no runtime dependencies — templates and hook scripts are embedded in the binary.
2. Add the binary to your system PATH
Quick Start
Subscription Management
# add a subscription
ssm subscription add <name> <clash-rss-subscription-url>
# refresh a subscription (with optional backup)
ssm subscription refresh <name> [--backup]
# delete a subscription
ssm subscription rm <name>
# rename a subscription
ssm subscription rename <name> <new-name>
# update subscription URL
ssm subscription set-url <name> <new-url>
# show the URL for a subscription
ssm subscription get-url <name>
# activate a subscription
ssm subscription activate <name>
# list all subscriptions
ssm subscription list
# show storage information
ssm subscription storage
Hook Management
# initialize hooks directory with template scripts
ssm hook init
# show hooks directory location and list all scripts
ssm hook list
# edit a hook script with system editor
ssm hook edit <script-name>
# remove a hook script
ssm hook rm <script-name>
Core Configuration Management
# import configuration from file
ssm config import <file-path> [--config-file <config.yaml>]
# export configuration to file
ssm config export <file-path> [--config-file <config.yaml>]
# edit configuration with system editor
ssm config edit [--config-file <config.yaml>]
# reset configuration to default values
ssm config reset [--config-file <config.yaml>]
# show current configuration
ssm config show [--config-file <config.yaml>]
# apply subscription to generate final config (with advanced options)
ssm config apply \
[--config-file <config.yaml>] \
[--output-file <output.yaml>] \
[--subscription <subscription-name>]
Options (available on every ssm config subcommand):
--config-file <config.yaml>: Use a custom config file instead of the default.--output-file <output.yaml>: Specify the output path for the generated config file.--subscription <subscription-name>: Use a specific subscription (not just the active one) for config generation.
Core Management
# update mihomo core binary
ssm core update [--version <version>] [--force]
Service Management
ssm service install [--name <name>] [--description <description>]
ssm service uninstall [--name <name>]
ssm service start [--name <name>]
ssm service stop [--name <name>]
ssm service restart [--name <name>]
ssm service reload [--name <name>] # reload config via mihomo's API, no restart
ssm service status [--name <name>]
install/uninstall/start/stop/restart need root/admin privileges:
- Linux / macOS: just run the command directly —
ssmre-execs itself undersudoautomatically, prompting for your password if needed. - Windows: run from an elevated/Administrator shell —
ssm.exe service install.
Development
go build ./...
go vet ./...
go test ./...
License
MIT License - see LICENSE file for details.