Skip to content
Snippets Groups Projects
Commit c75a587d authored by Torsten Grote's avatar Torsten Grote
Browse files

Merge branch '36-cliapp-data-in-linux-dir' into 'main'

Provide the typical dir for storing data

Closes #36

See merge request !18
parents 37b77b35 a9774a15
No related branches found
No related tags found
Loading
Pipeline #7681 passed
...@@ -9,7 +9,16 @@ import org.briarproject.mailbox.core.db.DatabaseConfig ...@@ -9,7 +9,16 @@ 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.slf4j.Logger
import org.slf4j.LoggerFactory.getLogger
import java.io.File import java.io.File
import java.io.File.separator
import java.io.IOException
import java.nio.file.Files.setPosixFilePermissions
import java.nio.file.attribute.PosixFilePermission
import java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE
import java.nio.file.attribute.PosixFilePermission.OWNER_READ
import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE
import javax.inject.Singleton import javax.inject.Singleton
@Module( @Module(
...@@ -22,12 +31,42 @@ import javax.inject.Singleton ...@@ -22,12 +31,42 @@ import javax.inject.Singleton
) )
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
internal class JavaCliModule { internal class JavaCliModule {
companion object {
private val LOG: Logger = getLogger(JavaCliModule::class.java)
private val DEFAULT_DATAHOME = System.getProperty("user.home") +
separator + ".local" + separator + "share"
private 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 {
// TODO: use a correct location val dataHome = when (val custom = System.getenv("XDG_DATA_HOME").orEmpty()) {
return File("/tmp") "" -> File(DEFAULT_DATAHOME)
else -> File(custom)
}
if (!dataHome.exists() || !dataHome.isDirectory()) {
throw IOException("datahome missing or not a directory: ${dataHome.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}")
}
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