do not share hidden directories from auto-watch

auto-update
Zlatin Balevsky 2021-09-07 04:38:52 +01:00
parent 4a62215e46
commit a04faadc04
No known key found for this signature in database
GPG Key ID: A72832072D525E41
3 changed files with 25 additions and 8 deletions

View File

@ -472,7 +472,7 @@ public class Core {
eventBus.register(AllFilesLoadedEvent.class, watchedDirectoryConverter)
log.info("initializing watched directory manager")
watchedDirectoryManager = new WatchedDirectoryManager(home, eventBus, fileManager)
watchedDirectoryManager = new WatchedDirectoryManager(home, eventBus, fileManager, props)
eventBus.with {
register(WatchedDirectoryConfigurationEvent.class, watchedDirectoryManager)
register(WatchedDirectoryConvertedEvent.class, watchedDirectoryManager)
@ -490,7 +490,8 @@ public class Core {
}
log.info("initializing directory watcher")
directoryWatcher = new DirectoryWatcher(eventBus, fileManager, home, watchedDirectoryManager, negativeFiles)
directoryWatcher = new DirectoryWatcher(eventBus, fileManager, home,
watchedDirectoryManager, negativeFiles, props)
eventBus.with {
register(DirectoryWatchedEvent.class, directoryWatcher)
register(WatchedDirectoryConvertedEvent.class, directoryWatcher)

View File

@ -37,6 +37,7 @@ class DirectoryWatcher {
private final File home
private final EventBus eventBus
private final MuWireSettings settings
private final FileManager fileManager
private final WatchedDirectoryManager watchedDirectoryManager
private final NegativeFiles negativeFiles
@ -47,9 +48,11 @@ class DirectoryWatcher {
private volatile boolean shutdown
DirectoryWatcher(EventBus eventBus, FileManager fileManager, File home,
WatchedDirectoryManager watchedDirectoryManager, NegativeFiles negativeFiles) {
WatchedDirectoryManager watchedDirectoryManager, NegativeFiles negativeFiles,
MuWireSettings settings) {
this.home = home
this.eventBus = eventBus
this.settings = settings
this.fileManager = fileManager
this.watchedDirectoryManager = watchedDirectoryManager
this.negativeFiles = negativeFiles
@ -122,7 +125,9 @@ class DirectoryWatcher {
private void processCreated(Path parent, Path path) {
File f= join(parent, path)
File f = join(parent, path)
if (!settings.shareHiddenFiles && f.isHidden())
return
log.fine("created entry $f")
if (f.isDirectory())
eventBus.publish(new FileSharedEvent(file : f, fromWatch : true))
@ -133,6 +138,8 @@ class DirectoryWatcher {
private void processModified(Path parent, Path path) {
File f = join(parent, path)
log.fine("modified entry $f")
if (!settings.shareHiddenFiles && f.isHidden())
return
if (!negativeFiles.negativeTree.get(f))
waitingFiles.put(f, System.currentTimeMillis())
}

View File

@ -1,5 +1,7 @@
package com.muwire.core.files.directories
import com.muwire.core.MuWireSettings
import java.nio.file.Files
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ExecutorService
@ -24,6 +26,7 @@ import groovy.util.logging.Log
class WatchedDirectoryManager {
private final File home
private final MuWireSettings settings
private final EventBus eventBus
private final FileManager fileManager
@ -39,11 +42,12 @@ class WatchedDirectoryManager {
private boolean converting = true
WatchedDirectoryManager(File home, EventBus eventBus, FileManager fileManager) {
WatchedDirectoryManager(File home, EventBus eventBus, FileManager fileManager, MuWireSettings settings) {
this.home = new File(home, "directories")
this.home.mkdir()
this.eventBus = eventBus
this.fileManager = fileManager
this.settings = settings
}
public boolean isWatched(File f) {
@ -96,13 +100,15 @@ class WatchedDirectoryManager {
forEach {
def parsed = slurper.parse(it.toFile())
WatchedDirectory wd = WatchedDirectory.fromJson(parsed)
if (wd.directory.exists() && wd.directory.isDirectory()) // check if directory disappeared
if (wd.directory.exists() && wd.directory.isDirectory() && // check if directory disappeared or hidden
(settings.shareHiddenFiles || !wd.directory.isHidden()))
watchedDirs.put(wd.directory, wd)
else
it.toFile().delete()
}
watchedDirs.values().stream().filter({it.autoWatch}).forEach {
watchedDirs.values().stream().filter({it.autoWatch}).
forEach {
eventBus.publish(new DirectoryWatchedEvent(directory : it.directory))
eventBus.publish(new FileSharedEvent(file : it.directory))
}
@ -123,6 +129,8 @@ class WatchedDirectoryManager {
void onFileSharedEvent(FileSharedEvent e) {
if (e.file.isFile() || watchedDirs.containsKey(e.file))
return
if (!settings.shareHiddenFiles && e.file.isHidden())
return
def wd = new WatchedDirectory(e.file)
if (e.fromWatch) {
@ -137,9 +145,10 @@ class WatchedDirectoryManager {
} else
wd.autoWatch = true
watchedDirs.put(wd.directory, wd)
persist(wd)
if (wd.autoWatch)
if (wd.autoWatch)
eventBus.publish(new DirectoryWatchedEvent(directory: wd.directory))
}