Skip to content
Snippets Groups Projects
Commit b1600708 authored by Sebastian's avatar Sebastian Committed by Mikolai Gütschow
Browse files

Create FileUtils.setRWX(); use more Path API instead of File

parent abf6de05
No related branches found
No related tags found
1 merge request!22Make it possible to start briar with temporary account with a bunch of testing contacts
......@@ -25,6 +25,7 @@ import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import java.io.File
import java.nio.file.Path
import java.util.Collections.emptyList
import javax.inject.Singleton
......@@ -43,7 +44,7 @@ import javax.inject.Singleton
SocksModule::class
]
)
internal class DesktopModule(private val appDir: File) {
internal class DesktopModule(private val appDir: Path) {
@Provides
@Singleton
......@@ -52,15 +53,15 @@ internal class DesktopModule(private val appDir: File) {
@Provides
@Singleton
internal fun provideDatabaseConfig(): DatabaseConfig {
val dbDir = File(appDir, "db")
val keyDir = File(appDir, "key")
return DesktopDatabaseConfig(dbDir, keyDir)
val dbDir = appDir.resolve("db")
val keyDir = appDir.resolve("key")
return DesktopDatabaseConfig(dbDir.toFile(), keyDir.toFile())
}
@Provides
@TorDirectory
internal fun provideTorDirectory(): File {
return File(appDir, "tor")
return appDir.resolve("tor").toFile()
}
@Provides
......
package org.briarproject.briar.desktop
import org.briarproject.bramble.util.OsUtils
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.attribute.PosixFilePermission
object FileUtils {
/**
* Sets read, write and executable flags for the specified file in a platform independent manner.
*/
fun setRWX(file: Path) {
if (OsUtils.isLinux() || OsUtils.isMac()) {
val perms = HashSet<PosixFilePermission>()
perms.add(PosixFilePermission.OWNER_READ)
perms.add(PosixFilePermission.OWNER_WRITE)
perms.add(PosixFilePermission.OWNER_EXECUTE)
Files.setPosixFilePermissions(file, perms)
} else if (OsUtils.isWindows()) {
val f = file.toFile()
f.setReadable(true, true)
f.setWritable(true, true)
f.setExecutable(true, true)
}
}
}
......@@ -8,19 +8,13 @@ import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option
import org.briarproject.bramble.BrambleCoreEagerSingletons
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import org.briarproject.bramble.util.OsUtils.isWindows
import org.briarproject.briar.BriarCoreEagerSingletons
import java.io.File
import java.io.File.separator
import java.io.IOException
import java.lang.System.getProperty
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 java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import java.util.logging.Level.ALL
import java.util.logging.Level.INFO
import java.util.logging.Level.WARNING
......@@ -70,24 +64,18 @@ private class Main : CliktCommand(
app.getUI().startBriar()
}
private fun getDataDir(): File {
val file = File(dataDir)
if (!file.exists() && !file.mkdirs()) {
throw IOException("Could not create directory: ${file.absolutePath}")
} else if (!file.isDirectory) {
throw IOException("Data dir is not a directory: ${file.absolutePath}")
private fun getDataDir(): Path {
val file = Paths.get(dataDir)
if (!Files.exists(file)) {
Files.createDirectories(file)
if (!Files.exists(file)) {
throw IOException("Could not create directory: ${file.toAbsolutePath()}")
}
}
if (isLinux() || isMac()) {
val perms = HashSet<PosixFilePermission>()
perms.add(OWNER_READ)
perms.add(OWNER_WRITE)
perms.add(OWNER_EXECUTE)
setPosixFilePermissions(file.toPath(), perms)
} else if (isWindows()) {
file.setReadable(true, true)
file.setWritable(true, true)
file.setExecutable(true, true)
if (!Files.isDirectory(file)) {
throw IOException("Data dir is not a directory: ${file.toAbsolutePath()}")
}
FileUtils.setRWX(file)
return file
}
}
......
......@@ -2,20 +2,11 @@ package org.briarproject.briar.desktop
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.window.application
import org.apache.commons.io.FileUtils
import org.briarproject.bramble.BrambleCoreEagerSingletons
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import org.briarproject.bramble.util.OsUtils.isWindows
import org.briarproject.briar.BriarCoreEagerSingletons
import java.io.IOException
import java.nio.file.Files
import java.nio.file.Files.setPosixFilePermissions
import java.nio.file.Path
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 java.util.logging.Level.INFO
import java.util.logging.LogManager
import kotlin.io.path.absolute
......@@ -36,7 +27,7 @@ internal class RunWithTemporaryAccount(val customization: BriarDesktopTestApp.()
app.getShutdownManager().addShutdownHook {
println("deleting temporary account at $dataDir")
FileUtils.deleteDirectory(dataDir.toFile())
org.apache.commons.io.FileUtils.deleteDirectory(dataDir.toFile())
}
// We need to load the eager singletons directly after making the
......@@ -70,18 +61,7 @@ internal class RunWithTemporaryAccount(val customization: BriarDesktopTestApp.()
} else if (!Files.isDirectory(dataDir)) {
throw IOException("Data dir is not a directory: ${dataDir.absolute()}")
}
if (isLinux() || isMac()) {
val perms = HashSet<PosixFilePermission>()
perms.add(OWNER_READ)
perms.add(OWNER_WRITE)
perms.add(OWNER_EXECUTE)
setPosixFilePermissions(dataDir, perms)
} else if (isWindows()) {
val file = dataDir.toFile()
file.setReadable(true, true)
file.setWritable(true, true)
file.setExecutable(true, true)
}
FileUtils.setRWX(dataDir)
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