67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
|
from git import Repo
|
||
|
import os
|
||
|
from shutil import copytree
|
||
|
from glob import glob
|
||
|
import subprocess
|
||
|
from time import time
|
||
|
|
||
|
BLACKLIST = [".git", ".obsidian", ".idea", ".gitlab-ci.yml", ".encrypt.py", ".trigger.py"]
|
||
|
|
||
|
enc_path = os.environ.get("ENCRYPTED_PATH")
|
||
|
enc_repo = os.environ.get("ENCRYPTED_REPO")
|
||
|
enc_repo_user = os.environ.get("ENCRYPTED_REPO_USERNAME")
|
||
|
enc_repo_pass = os.environ.get("ENCRYPTED_REPO_PASSWORD")
|
||
|
enc_key = os.environ.get("ENCRYPTION_KEY")
|
||
|
base_dir = os.getcwd()
|
||
|
|
||
|
current_time = str(int(time()))
|
||
|
|
||
|
os.mkdir(enc_path)
|
||
|
os.chdir(enc_path)
|
||
|
|
||
|
repo = Repo.init(enc_path)
|
||
|
repo.create_remote("origin", f"https://{enc_repo_user}:{enc_repo_pass}@github.com/baalajimaestro/{enc_repo}.git")
|
||
|
|
||
|
file_list = glob(base_dir+'/**/.*', recursive=True) + glob(base_dir+'/**/*', recursive=True)
|
||
|
|
||
|
for i in file_list:
|
||
|
if os.path.isdir(i):
|
||
|
rel_path = i.split(base_dir+"/")[1]
|
||
|
for j in BLACKLIST:
|
||
|
if rel_path in j:
|
||
|
break
|
||
|
else:
|
||
|
os.mkdir(enc_path + "/" + rel_path)
|
||
|
|
||
|
for i in file_list:
|
||
|
rel_path = i.split(base_dir+"/")[1]
|
||
|
if not os.path.isdir(i):
|
||
|
for j in BLACKLIST:
|
||
|
if rel_path in j:
|
||
|
break
|
||
|
else:
|
||
|
process = subprocess.run(
|
||
|
["openssl",
|
||
|
"enc",
|
||
|
"-chacha20",
|
||
|
"-base64",
|
||
|
"-salt",
|
||
|
"-iter",
|
||
|
"1000",
|
||
|
"-pass",
|
||
|
f"pass:{enc_key}",
|
||
|
"-md",
|
||
|
"sha512",
|
||
|
"-in",
|
||
|
i,
|
||
|
"-out",
|
||
|
enc_path+"/"+rel_path]
|
||
|
)
|
||
|
|
||
|
repo.git.add(".")
|
||
|
|
||
|
repo.index.commit(
|
||
|
f"Commit as of {current_time}"
|
||
|
)
|
||
|
|
||
|
repo.git.push('origin', 'master', force=True)
|