4 releases (2 breaking)
Uses new Rust 2024
0.3.1 | Apr 11, 2025 |
---|---|
0.3.0 | Apr 5, 2025 |
0.2.0 | Apr 2, 2025 |
0.1.0 | Apr 1, 2025 |
#332 in Network programming
488 downloads per month
17KB
243 lines
twisterad
Lightweight, in-memory CLI tool & daemon to rotate multiple twister ads on single worker, through modified Bitcoin Core JSON-RPC API library.
Optimal to run as systemd
unit that waits for twisterd
connection and then begins updating promotional messages with each new block found.
Check out config.json
to setup remote or local twisterd
connection and update default promotions asset!
See also the project Wiki and The twister P2P Book for more details!
Install
[!NOTE] Stable snaps with pre-compiled binaries available on the Releases page
To install usingcargo
, follow rustup instructions to continue with the steps below
Stable
cargo install twisterad
- run
twisterad -c path/to/config.json
Repository
git clone https://github.com/twisterarmy/twisterad.git
cd twisterad
cargo run -- -c path/to/config.json
CLI
Usage: twisterad [OPTIONS] --config <CONFIG>
Options:
-c, --config <CONFIG> Configuration file, required
-d, --delay <DELAY> Rotation queue delay, seconds [default: 60]
--host <HOST> RPC host [default: 127.0.0.1]
-j, --jobs <JOBS> Processor jobs to mine at once
-l, --latency <LATENCY> Miner latency in seconds, useful when blocks are being generated too quickly
-m, --mode <MODE> Rotation mode: * `c` - cycle * `s` - stop, disable worker [default: c]
-p, --password <PASSWORD> RPC password [default: pwd]
--port <PORT> RPC port [default: 28332]
-r, --rotations <ROTATIONS> Rotations quantity, before apply rotation `mode`
-s, --scheme <SCHEME> RPC scheme [default: http]
-u, --user <USER> RPC user [default: user]
-w, --wait <WAIT> Wait to server reconnect, seconds [default: 900]
-h, --help Print help
-V, --version Print version
System
To run twisterad
as the systemd
unit (background process):
cd twisterad
- navigate sources directorycargo build --release
- compile optimized binaryuseradd twisterad
- create new user fortwisterad
processcp target/release/twisterad /usr/bin/twisterad
- copy binary into native system locationchmod 0700 /usr/bin/twisterad
- give required permissionschown twisterad:twisterad /usr/bin/twisterad
- allow user/group accessmkdir /var/log/twisterad
- create destination for the logscp config.conf /etc/twisterad.conf
- copy and customize default config
Create new systemd
configuration file: nano /etc/systemd/system/twisterad.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=twisterad
Group=twisterad
ExecStart=/usr/bin/twisterad -c /etc/twisterad.conf
StandardOutput=file:/var/log/twisterad/debug.log
StandardError=file:/var/log/twisterad/error.log
[Install]
WantedBy=multi-user.target
- to disable debug output, set
null
forStandardOutput
orStandardError
Apply changes:
systemctl daemon-reload
- reload unit configurationsystemctl enable
- start on system bootsystemctl start twisterad
- launchsystemctl status twisterad
- check service status
On change config.json
:
systemctl restart twisterad
[!NOTE] After launch,
twisterad
listens for thetwisterd
connection to be established, and then begins rotation according to the configuration and startup arguments;When
twisterd
connection is lost,twisterad
will wait for reconnection and continue rotation from the previous memory state. It could be also useful for the desktop users, who running theirtwisterd
nodes periodically.
Dependencies
~9.5MB
~143K SLoC