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

View File

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

View File

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