Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d8438e13f5 | |||
| e73c62d034 | |||
| 6048280983 | |||
| e35cf0efa5 | |||
| ebf7574bde | |||
| e4268c0b21 | |||
| 91758903e9 | |||
| e1d84f2d75 | |||
| 10f6a5ec32 |
44
.github/workflows/docker-publish.yml
vendored
Normal file
44
.github/workflows/docker-publish.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Docker
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
if [ -f docker-compose.test.yml ]; then
|
||||
docker-compose --file docker-compose.test.yml build
|
||||
docker-compose --file docker-compose.test.yml run sut
|
||||
else
|
||||
docker build . --file Dockerfile
|
||||
fi
|
||||
|
||||
push:
|
||||
needs: test
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: docker/build-push-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
repository: snegov/seafile-client
|
||||
tag_with_ref: true
|
||||
add_git_labels: true
|
||||
push: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
@@ -1,10 +1,10 @@
|
||||
FROM python:3-slim
|
||||
|
||||
RUN apt-get update && apt-get install gnupg -y && rm -rf /var/lib/apt/lists/*
|
||||
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8756C4F765C9AC3CB6B85D62379CE192D401AB61 && \
|
||||
echo deb http://deb.seadrive.org buster main | tee /etc/apt/sources.list.d/seafile.list && \
|
||||
RUN apt-get update && apt-get install gnupg curl -y && rm -rf /var/lib/apt/lists/*
|
||||
RUN curl https://linux-clients.seafile.com/seafile.key | apt-key add - && \
|
||||
echo 'deb [arch=amd64] http://linux-clients.seafile.com/seafile-deb/buster/ stable main' > /etc/apt/sources.list.d/seafile.list && \
|
||||
apt-get update -y && \
|
||||
apt-get install -y seafile-cli procps curl grep && \
|
||||
apt-get install -y seafile-cli procps grep && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /seafile-client
|
||||
|
||||
@@ -14,7 +14,6 @@ services:
|
||||
environment:
|
||||
- LIBRARY_ID=<your-library-id-here>
|
||||
- SERVER_HOST=<server-host>
|
||||
- SERVER_PORT=<server-port>
|
||||
- USERNAME=<username>
|
||||
- PASSWORD=<password>
|
||||
- DATA_DIR=<directory-path-to-sync>
|
||||
@@ -26,8 +25,7 @@ services:
|
||||
|
||||
## Environment variables:
|
||||
- `LIBRARY_ID=<your-library-id-here>` ID of library to sync; multiple libraries could be separated by colon `:`
|
||||
- `SERVER_HOST=<server-host>` Hostname of your seafile server, eg: seafile.example.com
|
||||
- `SERVER_PORT=<server-port>` Which port the server is hosted on: usually 443 (https) or 80 (http)
|
||||
- `SERVER_HOST=<server-host>` Hostname of your seafile server, eg: seafile.example.com. If you're using non-standart port, specify it here, eg: seafile.example.com:8080
|
||||
- `USERNAME=<username>` Seafile account username
|
||||
- `PASSWORD=<password>` Seafile account password
|
||||
- `DATA_DIR=<directory-path-to-sync>` The path where to put the files
|
||||
|
||||
@@ -7,7 +7,6 @@ services:
|
||||
environment:
|
||||
- LIBRARY_ID=<your-library-id-here>
|
||||
- SERVER_HOST=<server-host>
|
||||
- SERVER_PORT=<server-port>
|
||||
- USERNAME=<username>
|
||||
- PASSWORD=<password>
|
||||
- DATA_DIR=<directory-path-to-sync>
|
||||
|
||||
@@ -2,6 +2,7 @@ import logging
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import requests
|
||||
|
||||
@@ -14,8 +15,9 @@ logging.basicConfig(format="%(asctime)s %(message)s",
|
||||
|
||||
|
||||
class SeafileClient:
|
||||
def __init__(self, host: str, port: int, user: str, passwd: str):
|
||||
self.url = f"https://{host}:{port}"
|
||||
def __init__(self, host: str, user: str, passwd: str):
|
||||
up = urlparse(requests.get(f"http://{host}").url)
|
||||
self.url = f"{up.scheme}://{up.netloc}"
|
||||
self.user = user
|
||||
self.password = passwd
|
||||
self.__token = None
|
||||
|
||||
3
start.py
3
start.py
@@ -15,7 +15,6 @@ def main():
|
||||
parser.add_argument("--gid", default=os.getenv("SEAFILE_GID"), type=int)
|
||||
parser.add_argument("--data-dir", default=os.getenv("DATA_DIR"))
|
||||
parser.add_argument("--host", default=os.getenv("SERVER_HOST"))
|
||||
parser.add_argument("--port", default=os.getenv("SERVER_PORT"), type=int)
|
||||
parser.add_argument("--username", default=os.getenv("USERNAME"))
|
||||
parser.add_argument("--password", default=os.getenv("PASSWORD"))
|
||||
parser.add_argument("--libs", default=os.getenv("LIBRARY_ID"))
|
||||
@@ -24,7 +23,7 @@ def main():
|
||||
setup_uid(args.uid, args.gid)
|
||||
start_seaf_daemon()
|
||||
create_dir(args.data_dir)
|
||||
client = SeafileClient(args.host, args.port, args.username, args.password)
|
||||
client = SeafileClient(args.host, args.username, args.password)
|
||||
for lib_id in args.libs.split(sep=":"):
|
||||
client.sync_lib(lib_id, args.data_dir)
|
||||
client.watch_status()
|
||||
|
||||
Reference in New Issue
Block a user