mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
manager: validate name on collection init: must start with wordchar and can contain wordchar or -
This commit is contained in:
parent
134b90eca5
commit
a34607764e
@ -4,6 +4,7 @@ import sys
|
||||
import logging
|
||||
import heapq
|
||||
import yaml
|
||||
import re
|
||||
|
||||
from distutils.util import strtobool
|
||||
from pkg_resources import resource_string
|
||||
@ -33,10 +34,15 @@ directory structure expected by pywb
|
||||
DEF_INDEX_FILE = 'index.cdxj'
|
||||
AUTO_INDEX_FILE = 'autoindex.cdxj'
|
||||
|
||||
COLL_RX = re.compile('^[\w][-\w]*$')
|
||||
|
||||
def __init__(self, coll_name, colls_dir='collections', must_exist=True):
|
||||
self.default_config = load_yaml_config(DEFAULT_CONFIG)
|
||||
|
||||
self.colls_dir = colls_dir
|
||||
if coll_name and not self.COLL_RX.match(coll_name):
|
||||
raise ValueError('Invalid Collection Name: ' + coll_name)
|
||||
|
||||
self.colls_dir = os.path.join(os.getcwd(), colls_dir)
|
||||
|
||||
self._set_coll_dirs(coll_name)
|
||||
|
||||
@ -75,11 +81,11 @@ directory structure expected by pywb
|
||||
if not os.path.isdir(dirname):
|
||||
os.mkdir(dirname)
|
||||
|
||||
logging.info('Created Dir: ' + dirname)
|
||||
logging.info('Created Directory: ' + dirname)
|
||||
|
||||
def add_collection(self):
|
||||
os.makedirs(self.curr_coll_dir)
|
||||
logging.info('Created directory: ' + self.curr_coll_dir)
|
||||
logging.info('Created Directory: ' + self.curr_coll_dir)
|
||||
|
||||
self._create_dir(self.archive_dir)
|
||||
self._create_dir(self.indexes_dir)
|
||||
@ -429,7 +435,7 @@ Create manage file based web archive collections
|
||||
|
||||
# Add default template
|
||||
def do_add_template(r):
|
||||
m = CollectionsManager(r.coll_name)
|
||||
m = CollectionsManager(r.coll_name, must_exist=False)
|
||||
if r.add:
|
||||
m.add_template(r.add, r.force)
|
||||
elif r.remove:
|
||||
|
@ -507,7 +507,7 @@ class TestManagedColls(object):
|
||||
main(['autoindex', 'auto'])
|
||||
|
||||
thread.join()
|
||||
|
||||
|
||||
# assert file was update
|
||||
assert os.path.getmtime(index_file) > mtime
|
||||
|
||||
@ -552,6 +552,15 @@ class TestManagedColls(object):
|
||||
with raises(IOError):
|
||||
main(['index', 'test', invalid_warc])
|
||||
|
||||
def test_err_invalid_name(self):
|
||||
""" Invalid collection name
|
||||
"""
|
||||
with raises(ValueError):
|
||||
main(['init', '../abc%'])
|
||||
|
||||
with raises(ValueError):
|
||||
main(['init', '45^23'])
|
||||
|
||||
def test_err_missing_dirs(self):
|
||||
""" Test various errors with missing warcs dir,
|
||||
missing cdx dir, non dir cdx file, and missing collections root
|
||||
|
Loading…
x
Reference in New Issue
Block a user