Import
This commit is contained in:
commit
7903f61b44
7
Readme.md
Normal file
7
Readme.md
Normal file
@ -0,0 +1,7 @@
|
||||
Forked froma script that was once available on GitHub and now deleted.
|
||||
|
||||
Configure Boto3 with the Object Storage endpoint and credentials.
|
||||
|
||||
Change the endpoint in the Javascript file that play the presentation and anywhhere else in BBB templates.
|
||||
|
||||
This script should run in cron and it is possible to choose if the original files have to be deleted or not. `metadata.xml` is always kept locally bevcause it's what BBB uses to keep track of the records.
|
77
bbb-s3.py
Normal file
77
bbb-s3.py
Normal file
@ -0,0 +1,77 @@
|
||||
import os, glob, shutil, boto3, magic
|
||||
from botocore.exceptions import NoCredentialsError
|
||||
mime = magic.Magic(mime=True)
|
||||
## Configuration Part
|
||||
BUCKET_NAME = 'bigbluebutton'
|
||||
DELETE_SERVER_FILES = True ## Set False (F should be capital) if you don't want to delete files from bbb-server
|
||||
|
||||
def upload_to_aws(local_file, bucket, s3_file):
|
||||
ctype = mime.from_file(local_file)
|
||||
s3 = boto3.client('s3')
|
||||
|
||||
try:
|
||||
s3.upload_file(local_file, bucket, s3_file, ExtraArgs={'ContentType': ctype, 'ACL': "public-read"})
|
||||
return True
|
||||
except OSError as e:
|
||||
if e.errno == errno.ENOENT:
|
||||
print("\nFile not found\n")
|
||||
except NoCredentialsError:
|
||||
return False
|
||||
|
||||
def getListOfFiles(dirName):
|
||||
listOfFile = os.listdir(dirName)
|
||||
allFiles = list()
|
||||
for entry in listOfFile:
|
||||
fullPath = os.path.join(dirName, entry)
|
||||
if os.path.isdir(fullPath):
|
||||
allFiles = allFiles + getListOfFiles(fullPath)
|
||||
else:
|
||||
allFiles.append(fullPath)
|
||||
|
||||
return allFiles
|
||||
|
||||
def getListOfDirs(path):
|
||||
return [os.path.basename(x) for x in filter(
|
||||
os.path.isdir, glob.glob(os.path.join(path, '*')))]
|
||||
|
||||
def remove(path):
|
||||
""" param <path> could either be relative or absolute. """
|
||||
if (os.path.isfile(path) or os.path.islink(path)) and "metadata.xml" not in path:
|
||||
os.remove(path) # remove the file
|
||||
elif os.path.isdir(path):
|
||||
shutil.rmtree(path) # remove dir and all contains
|
||||
else:
|
||||
pass
|
||||
#raise ValueError("file {} is not a file or dir.".format(path))
|
||||
|
||||
def main():
|
||||
|
||||
dirName = os.getcwd();
|
||||
listOfFiles = getListOfFiles(dirName)
|
||||
listOfDirs = getListOfDirs(dirName)
|
||||
for elem in listOfFiles:
|
||||
listOfFiles = list()
|
||||
for (dirpath, dirnames, filenames) in os.walk(dirName):
|
||||
listOfFiles += [os.path.join(dirpath, file) for file in filenames]
|
||||
|
||||
for elem in listOfFiles:
|
||||
relative_path = elem.replace(dirName,'')[1:]
|
||||
if(relative_path!='bbb-s3.py'):
|
||||
print("\nUploading "+relative_path)
|
||||
uploaded = upload_to_aws(elem, BUCKET_NAME, relative_path)
|
||||
if(uploaded and DELETE_SERVER_FILES):
|
||||
remove(elem)
|
||||
else:
|
||||
print("\nNot able to delete files from your bbb-server, check file if its uploaded")
|
||||
|
||||
file_length = len(listOfFiles)
|
||||
if(file_length==1):
|
||||
for folder in listOfDirs:
|
||||
remove(folder)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue
Block a user