54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# Example pause/resume script
|
|
# written by will@sowerbutts.com
|
|
|
|
import requests
|
|
import urllib.parse
|
|
import sys
|
|
|
|
|
|
class DuplicatiServer(object):
|
|
def __init__(self, base_url):
|
|
self.base_url = base_url
|
|
self.cookiejar = requests.cookies.RequestsCookieJar()
|
|
self.headers = dict()
|
|
|
|
def fetch(self, path, post=False, data=None):
|
|
for attempt in range(2): # we may get a "Missing XSRF token" error on the first attempt
|
|
if post:
|
|
r = requests.post(self.base_url + path, cookies=self.cookiejar, headers=self.headers, data=data)
|
|
else:
|
|
r = requests.get(self.base_url + path, cookies=self.cookiejar, headers=self.headers, data=data)
|
|
self.cookiejar.update(r.cookies)
|
|
self.headers['X-XSRF-Token'] = urllib.parse.unquote(r.cookies['xsrf-token'])
|
|
if r.status_code != 400:
|
|
break
|
|
return r
|
|
|
|
def pause(self):
|
|
return self.fetch('api/v1/serverstate/pause', post=True, data=b'')
|
|
|
|
def resume(self):
|
|
return self.fetch('api/v1/serverstate/resume', post=True, data=b'')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
ds = DuplicatiServer("http://localhost:8200/")
|
|
r = None
|
|
try:
|
|
cmd = sys.argv[1]
|
|
except IndexError:
|
|
cmd = None
|
|
if cmd == 'pause':
|
|
r = ds.pause()
|
|
elif cmd == 'resume':
|
|
r = ds.resume()
|
|
else:
|
|
print("Syntax: %s [pause|resume]" % sys.argv[0])
|
|
sys.exit(1)
|
|
if r and r.status_code == 200:
|
|
print("OK")
|
|
else:
|
|
print("Something went wrong -- %d %s" % (r.status_code, r.reason))
|