Skip to content
Snippets Groups Projects
Commit a41788b3 authored by Sebastian's avatar Sebastian
Browse files

Merge branch 'db-in-subdir' into 'main'

Create DB dir in subdirectory of mailbox data dir

See merge request !22
parents c75a587d 4b0b3cec
No related branches found
No related tags found
1 merge request!22Create DB dir in subdirectory of mailbox data dir
Pipeline #7684 passed
...@@ -9,6 +9,7 @@ import org.briarproject.mailbox.core.db.DatabaseConfig ...@@ -9,6 +9,7 @@ import org.briarproject.mailbox.core.db.DatabaseConfig
import org.briarproject.mailbox.core.event.DefaultEventExecutorModule import org.briarproject.mailbox.core.event.DefaultEventExecutorModule
import org.briarproject.mailbox.core.system.DefaultTaskSchedulerModule import org.briarproject.mailbox.core.system.DefaultTaskSchedulerModule
import org.briarproject.mailbox.core.tor.JavaTorModule import org.briarproject.mailbox.core.tor.JavaTorModule
import org.briarproject.mailbox.core.util.LogUtils.info
import org.slf4j.Logger import org.slf4j.Logger
import org.slf4j.LoggerFactory.getLogger import org.slf4j.LoggerFactory.getLogger
import java.io.File import java.io.File
...@@ -37,36 +38,48 @@ internal class JavaCliModule { ...@@ -37,36 +38,48 @@ internal class JavaCliModule {
private val DEFAULT_DATAHOME = System.getProperty("user.home") + private val DEFAULT_DATAHOME = System.getProperty("user.home") +
separator + ".local" + separator + "share" separator + ".local" + separator + "share"
private val DATAHOME_SUBDIR = "briar-mailbox" private const val DATAHOME_SUBDIR = "briar-mailbox"
} }
@Singleton @Singleton
@Provides @Provides
fun provideDatabaseConfig() = object : DatabaseConfig { fun provideDatabaseConfig() = object : DatabaseConfig {
override fun getDatabaseDirectory(): File { override fun getDatabaseDirectory(): File {
val dataHome = when (val custom = System.getenv("XDG_DATA_HOME").orEmpty()) { val dataDir = getDataDir()
"" -> File(DEFAULT_DATAHOME) val dbDir = File(dataDir, "db")
else -> File(custom) if (!dbDir.exists() && !dbDir.mkdirs()) {
} throw IOException("dbDir could not be created: ${dbDir.absolutePath}")
if (!dataHome.exists() || !dataHome.isDirectory()) { } else if (!dbDir.isDirectory) {
throw IOException("datahome missing or not a directory: ${dataHome.absolutePath}") throw IOException("dbDir is not a directory: ${dbDir.absolutePath}")
}
val dataDir = File(dataHome.absolutePath + separator + DATAHOME_SUBDIR)
if (!dataDir.exists() && !dataDir.mkdirs()) {
throw IOException("datadir could not be created: ${dataDir.absolutePath}")
} else if (!dataDir.isDirectory()) {
throw IOException("datadir is not a directory: ${dataDir.absolutePath}")
} }
return dbDir
}
}
val perms = HashSet<PosixFilePermission>() private fun getDataDir(): File {
perms.add(OWNER_READ) val dataHome = when (val custom = System.getenv("XDG_DATA_HOME").orEmpty()) {
perms.add(OWNER_WRITE) "" -> File(DEFAULT_DATAHOME)
perms.add(OWNER_EXECUTE) else -> File(custom)
setPosixFilePermissions(dataDir.toPath(), perms) }
if (!dataHome.exists() || !dataHome.isDirectory) {
throw IOException("datahome missing or not a directory: ${dataHome.absolutePath}")
}
LOG.info("Datadir set to: " + dataDir.absolutePath) val dataDir = File(dataHome.absolutePath + separator + DATAHOME_SUBDIR)
return dataDir if (!dataDir.exists() && !dataDir.mkdirs()) {
throw IOException("datadir could not be created: ${dataDir.absolutePath}")
} else if (!dataDir.isDirectory) {
throw IOException("datadir is not a directory: ${dataDir.absolutePath}")
} }
val perms = HashSet<PosixFilePermission>()
perms.add(OWNER_READ)
perms.add(OWNER_WRITE)
perms.add(OWNER_EXECUTE)
setPosixFilePermissions(dataDir.toPath(), perms)
LOG.info { "Datadir set to: ${dataDir.absolutePath}" }
return dataDir
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment