Move internal options to other sections
This commit is contained in:
parent
8e3465b5d4
commit
180e96b332
@ -281,7 +281,7 @@ class Application(
|
|||||||
logger.warning("Access to principal path %r denied by "
|
logger.warning("Access to principal path %r denied by "
|
||||||
"rights backend", principal_path)
|
"rights backend", principal_path)
|
||||||
|
|
||||||
if self.configuration.get("_internal", "internal_server"):
|
if self.configuration.get("server", "_internal_server"):
|
||||||
# Verify content length
|
# Verify content length
|
||||||
content_length = int(environ.get("CONTENT_LENGTH") or 0)
|
content_length = int(environ.get("CONTENT_LENGTH") or 0)
|
||||||
if content_length:
|
if content_length:
|
||||||
|
@ -132,7 +132,11 @@ DEFAULT_CONFIG_SCHEMA = OrderedDict([
|
|||||||
"value": "",
|
"value": "",
|
||||||
"help": "set CA certificate for validating clients",
|
"help": "set CA certificate for validating clients",
|
||||||
"aliases": ["--certificate-authority"],
|
"aliases": ["--certificate-authority"],
|
||||||
"type": filepath})])),
|
"type": filepath}),
|
||||||
|
("_internal_server", {
|
||||||
|
"value": "False",
|
||||||
|
"help": "the internal server is used",
|
||||||
|
"type": bool})])),
|
||||||
("encoding", OrderedDict([
|
("encoding", OrderedDict([
|
||||||
("request", {
|
("request", {
|
||||||
"value": "utf-8",
|
"value": "utf-8",
|
||||||
@ -191,7 +195,11 @@ DEFAULT_CONFIG_SCHEMA = OrderedDict([
|
|||||||
("hook", {
|
("hook", {
|
||||||
"value": "",
|
"value": "",
|
||||||
"help": "command that is run after changes to storage",
|
"help": "command that is run after changes to storage",
|
||||||
"type": str})])),
|
"type": str}),
|
||||||
|
("_filesystem_fsync", {
|
||||||
|
"value": "True",
|
||||||
|
"help": "sync all changes to filesystem during requests",
|
||||||
|
"type": bool})])),
|
||||||
("web", OrderedDict([
|
("web", OrderedDict([
|
||||||
("type", {
|
("type", {
|
||||||
"value": "internal",
|
"value": "internal",
|
||||||
@ -208,16 +216,7 @@ DEFAULT_CONFIG_SCHEMA = OrderedDict([
|
|||||||
"help": "mask passwords in logs",
|
"help": "mask passwords in logs",
|
||||||
"type": bool})])),
|
"type": bool})])),
|
||||||
("headers", OrderedDict([
|
("headers", OrderedDict([
|
||||||
("_allow_extra", str)])),
|
("_allow_extra", str)]))])
|
||||||
("_internal", OrderedDict([
|
|
||||||
("filesystem_fsync", {
|
|
||||||
"value": "True",
|
|
||||||
"help": "sync all changes to filesystem during requests",
|
|
||||||
"type": bool}),
|
|
||||||
("internal_server", {
|
|
||||||
"value": "False",
|
|
||||||
"help": "the internal server is used",
|
|
||||||
"type": bool})]))])
|
|
||||||
|
|
||||||
|
|
||||||
def parse_compound_paths(*compound_paths):
|
def parse_compound_paths(*compound_paths):
|
||||||
|
@ -200,7 +200,7 @@ def serve(configuration, shutdown_socket):
|
|||||||
logger.info("Starting Radicale")
|
logger.info("Starting Radicale")
|
||||||
# Copy configuration before modifying
|
# Copy configuration before modifying
|
||||||
configuration = configuration.copy()
|
configuration = configuration.copy()
|
||||||
configuration.update({"_internal": {"internal_server": "True"}}, "server",
|
configuration.update({"server": {"_internal_server": "True"}}, "server",
|
||||||
privileged=True)
|
privileged=True)
|
||||||
|
|
||||||
use_ssl = configuration.get("server", "ssl")
|
use_ssl = configuration.get("server", "ssl")
|
||||||
|
@ -125,7 +125,7 @@ class Storage(
|
|||||||
return os.path.join(filesystem_folder, "collection-root")
|
return os.path.join(filesystem_folder, "collection-root")
|
||||||
|
|
||||||
def _fsync(self, fd):
|
def _fsync(self, fd):
|
||||||
if self.configuration.get("_internal", "filesystem_fsync"):
|
if self.configuration.get("storage", "_filesystem_fsync"):
|
||||||
pathutils.fsync(fd)
|
pathutils.fsync(fd)
|
||||||
|
|
||||||
def _sync_directory(self, path):
|
def _sync_directory(self, path):
|
||||||
@ -134,7 +134,7 @@ class Storage(
|
|||||||
This only works on POSIX and does nothing on other systems.
|
This only works on POSIX and does nothing on other systems.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if not self.configuration.get("_internal", "filesystem_fsync"):
|
if not self.configuration.get("storage", "_filesystem_fsync"):
|
||||||
return
|
return
|
||||||
if os.name == "posix":
|
if os.name == "posix":
|
||||||
try:
|
try:
|
||||||
|
@ -42,9 +42,9 @@ class TestBaseAuthRequests(BaseTest):
|
|||||||
self.configuration = config.load()
|
self.configuration = config.load()
|
||||||
self.colpath = tempfile.mkdtemp()
|
self.colpath = tempfile.mkdtemp()
|
||||||
self.configuration.update({
|
self.configuration.update({
|
||||||
"storage": {"filesystem_folder": self.colpath},
|
"storage": {"filesystem_folder": self.colpath,
|
||||||
# Disable syncing to disk for better performance
|
# Disable syncing to disk for better performance
|
||||||
"_internal": {"filesystem_fsync": "False"},
|
"_filesystem_fsync": "False"},
|
||||||
# Set incorrect authentication delay to a very low value
|
# Set incorrect authentication delay to a very low value
|
||||||
"auth": {"delay": "0.002"}}, "test", privileged=True)
|
"auth": {"delay": "0.002"}}, "test", privileged=True)
|
||||||
|
|
||||||
|
@ -1348,9 +1348,9 @@ collection: .*
|
|||||||
permissions: RrWw""")
|
permissions: RrWw""")
|
||||||
self.configuration.update({
|
self.configuration.update({
|
||||||
"storage": {"type": self.storage_type,
|
"storage": {"type": self.storage_type,
|
||||||
"filesystem_folder": self.colpath},
|
"filesystem_folder": self.colpath,
|
||||||
# Disable syncing to disk for better performance
|
# Disable syncing to disk for better performance
|
||||||
"_internal": {"filesystem_fsync": "False"},
|
"_filesystem_fsync": "False"},
|
||||||
"rights": {"file": rights_file_path,
|
"rights": {"file": rights_file_path,
|
||||||
"type": "from_file"}}, "test", privileged=True)
|
"type": "from_file"}}, "test", privileged=True)
|
||||||
self.application = Application(self.configuration)
|
self.application = Application(self.configuration)
|
||||||
@ -1373,7 +1373,7 @@ class TestMultiFileSystem(BaseFileSystemTest, BaseRequestsMixIn):
|
|||||||
|
|
||||||
def test_fsync(self):
|
def test_fsync(self):
|
||||||
"""Create a directory and file with syncing enabled."""
|
"""Create a directory and file with syncing enabled."""
|
||||||
self.configuration.update({"_internal": {"filesystem_fsync": "True"}},
|
self.configuration.update({"storage": {"_filesystem_fsync": "True"}},
|
||||||
"test", privileged=True)
|
"test", privileged=True)
|
||||||
self.application = Application(self.configuration)
|
self.application = Application(self.configuration)
|
||||||
self.mkcalendar("/calendar.ics/")
|
self.mkcalendar("/calendar.ics/")
|
||||||
|
@ -131,15 +131,15 @@ class TestConfig:
|
|||||||
assert "section 'server" in str(e)
|
assert "section 'server" in str(e)
|
||||||
assert "'x'" in str(e)
|
assert "'x'" in str(e)
|
||||||
|
|
||||||
def test_internal(self):
|
def test_privileged(self):
|
||||||
configuration = config.load()
|
configuration = config.load()
|
||||||
configuration.update({"_internal": {"internal_server": "True"}},
|
configuration.update({"server": {"_internal_server": "True"}},
|
||||||
"test", privileged=True)
|
"test", privileged=True)
|
||||||
with pytest.raises(Exception) as exc_info:
|
with pytest.raises(Exception) as exc_info:
|
||||||
configuration.update(
|
configuration.update(
|
||||||
{"_internal": {"internal_server": "True"}}, "test")
|
{"server": {"_internal_server": "True"}}, "test")
|
||||||
e = exc_info.value
|
e = exc_info.value
|
||||||
assert "Invalid section '_internal'" in str(e)
|
assert "Invalid option '_internal_server'" in str(e)
|
||||||
|
|
||||||
def test_plugin_schema(self):
|
def test_plugin_schema(self):
|
||||||
plugin_schema = {"auth": {"new_option": {"value": "False",
|
plugin_schema = {"auth": {"new_option": {"value": "False",
|
||||||
|
@ -35,9 +35,9 @@ class TestBaseRightsRequests(BaseTest):
|
|||||||
self.configuration = config.load()
|
self.configuration = config.load()
|
||||||
self.colpath = tempfile.mkdtemp()
|
self.colpath = tempfile.mkdtemp()
|
||||||
self.configuration.update({
|
self.configuration.update({
|
||||||
"storage": {"filesystem_folder": self.colpath},
|
"storage": {"filesystem_folder": self.colpath,
|
||||||
# Disable syncing to disk for better performance
|
# Disable syncing to disk for better performance
|
||||||
"_internal": {"filesystem_fsync": "False"}},
|
"_filesystem_fsync": "False"}},
|
||||||
"test", privileged=True)
|
"test", privileged=True)
|
||||||
|
|
||||||
def teardown(self):
|
def teardown(self):
|
||||||
|
@ -63,12 +63,12 @@ class TestBaseServerRequests(BaseTest):
|
|||||||
sock.bind(("127.0.0.1", 0))
|
sock.bind(("127.0.0.1", 0))
|
||||||
self.sockname = sock.getsockname()
|
self.sockname = sock.getsockname()
|
||||||
self.configuration.update({
|
self.configuration.update({
|
||||||
"storage": {"filesystem_folder": self.colpath},
|
"storage": {"filesystem_folder": self.colpath,
|
||||||
|
# Disable syncing to disk for better performance
|
||||||
|
"_filesystem_fsync": "False"},
|
||||||
"server": {"hosts": "[%s]:%d" % self.sockname},
|
"server": {"hosts": "[%s]:%d" % self.sockname},
|
||||||
# Enable debugging for new processes
|
# Enable debugging for new processes
|
||||||
"logging": {"level": "debug"},
|
"logging": {"level": "debug"}},
|
||||||
# Disable syncing to disk for better performance
|
|
||||||
"_internal": {"filesystem_fsync": "False"}},
|
|
||||||
"test", privileged=True)
|
"test", privileged=True)
|
||||||
self.thread = threading.Thread(target=server.serve, args=(
|
self.thread = threading.Thread(target=server.serve, args=(
|
||||||
self.configuration, shutdown_socket_out))
|
self.configuration, shutdown_socket_out))
|
||||||
|
@ -33,9 +33,9 @@ class TestBaseWebRequests(BaseTest):
|
|||||||
self.configuration = config.load()
|
self.configuration = config.load()
|
||||||
self.colpath = tempfile.mkdtemp()
|
self.colpath = tempfile.mkdtemp()
|
||||||
self.configuration.update({
|
self.configuration.update({
|
||||||
"storage": {"filesystem_folder": self.colpath},
|
"storage": {"filesystem_folder": self.colpath,
|
||||||
# Disable syncing to disk for better performance
|
# Disable syncing to disk for better performance
|
||||||
"_internal": {"filesystem_fsync": "False"}},
|
"_filesystem_fsync": "False"}},
|
||||||
"test", privileged=True)
|
"test", privileged=True)
|
||||||
self.application = Application(self.configuration)
|
self.application = Application(self.configuration)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user