aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 8cf600e0d4fc729fd256a76e8aaf42c00130a775 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# syncthingmanager
A command line tool for the Syncthing API. Designed to make setting up remote servers easier.
(and for users who prefer the cli)

## Installation and configuration
### Requirements
- Python 3.4 or later
- pip and wheel for Python 3
- Syncthing 0.14.19 or later

On Debian and derivatives, get the dependencies with

`apt-get install syncthing python3-pip python3-wheel`

Install stman with:

`pip3 install syncthingmanager`

The configuration must be initialized with the Syncthing API key.
Usually this can be done automatically:
`stman configure`. If that doesn't work, get the API key from the GUI 
or config.xml (in Syncthing's config directory), then run `stman configure apikey`.

### Configuration syntax
If your Syncthing GUI/API is on a non-standard port, or not on localhost, 
you will need to configure it manually. By default, `stman` will look for 
settings at `~/.config/syncthingmanager/syncthingmanager.conf`. 
A sample syncthingmanager.conf follows:

```
[DEFAULT]
name = localhost

[localhost]
apikey = MafkDvpagX5J6oMzxm9HwDSXJPSQKPFS
hostname = localhost
port = 8384

[remote-device]
apikey = h9mifaKwDq3SSPPmgUuDjsrivFg3dtkK
hostname = some-host
port = 9001
```

In this example, my default device is the one at localhost:8384. If I wanted 
to send a command to the one at some-host:9001, it would look like 
`stman --device remote-device ...`

## Usage
```
$ stman device list
$HOME/.config/syncthingmanager/syncthingmanager.conf doesn't appear to be a valid path. Exiting.
# Autoconfiguration
$ stman configure
# List configured devices
$ stman device list
syncthingmanager-test     This Device
    ID:     LYAB7ZG-XDVMAVM-OUZ7EAB-5N3UVWY-DXTFRJ4-U2MTHGQ-7TIBRJE-PC56BQ6

another-device     Connected
    At:     # Address removed
    Folders:    dotest
    ID:     H2AJWNR-5VYNWKM-PS2L2EE-QJYBG2U-3IFN5XM-EKSIIKF-NVLAG2E-KIQE4AE
# List configured folders
$ stman folder list
Default Folder
    Shared With:  
    Folder ID:  default
    Folder Path:    /home/syncthing/Sync/

do-test
    Shared With:  another-device
    Folder ID:  dotest
    Folder Path:    /home/syncthing/stman-test/
# Adding a device
$ stman device add MFZWI3D-BONSGYC-YLTMRWG-C43ENR5-QXGZDMM-FZWI3DP-BONSGYY-LTMRWAD -n yet-another-device -i

$ stman device list
syncthingmanager-test     This Device
    ID:     LYAB7ZG-XDVMAVM-OUZ7EAB-5N3UVWY-DXTFRJ4-U2MTHGQ-7TIBRJE-PC56BQ6

another-device     Connected
    At:     #Address removed
    Folders:    dotest
    ID:     H2AJWNR-5VYNWKM-PS2L2EE-QJYBG2U-3IFN5XM-EKSIIKF-NVLAG2E-KIQE4AE

yet-another-device     Not Connected
    Folders:    
    ID:     MFZWI3D-BONSGYC-YLTMRWG-C43ENR5-QXGZDMM-FZWI3DP-BONSGYY-LTMRWAD
# Share a folder with a device
$ stman folder share dotest yet-another-device
$ stman folder list
Default Folder
    Shared With:  
    Folder ID:  default
    Folder Path:    /home/syncthing/Sync/

do-test
    Shared With:  another-device, yet-another-device
    Folder ID:  dotest
    Folder Path:    /home/syncthing/stman-test/
# Configure and view advanced options
$ stman folder versioning dotest simple --versions 15
$ stman folder edit dotest -r 70
$ stman folder info dotest
do-test
    Shared With:  another-device, yet-another-device
    Folder ID:  dotest
    Folder Path:    /home/syncthing/stman-test/                
    Rescan Interval:    70
    File Pull Order:  alphabetic
    Versioning:       simple
    Keep Versions:      15
```

Other commands are documented in `stman -h`, `stman command -h`, and so on.


## Notes
- On Windows, cmd.exe will print funny characters in place of colors.
PowerShell works fine.
- Some information shown in the GUI requires use of the Events API, which
isn't part of python-syncthing. I plan on creating Python bindings for it
and using the results, but haven't started yet.
- I chose to have the device list output be online first instead of 
alphabetical.