integration with AccessTokenProvider

This commit is contained in:
lucio.lelii 2021-07-08 16:46:01 +02:00
parent 97184640f1
commit 90899ec0cf
1 changed files with 17 additions and 14 deletions

View File

@ -10,7 +10,7 @@ import java.util.concurrent.TimeUnit;
import org.cache2k.Cache; import org.cache2k.Cache;
import org.cache2k.Cache2kBuilder; import org.cache2k.Cache2kBuilder;
import org.gcube.common.authorization.library.AuthorizedTasks; import org.gcube.common.authorization.library.AuthorizedTasks;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.provider.AccessTokenProvider;
import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.storagehub.client.dsl.ContainerType; import org.gcube.common.storagehub.client.dsl.ContainerType;
import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.FileContainer;
@ -63,8 +63,11 @@ public class StorageHubFS extends FuseStubFS {
super(); super();
this.token = token; this.token = token;
this.scope = scope; this.scope = scope;
logger.debug("using token {} in scope {}", token , scope);
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
client = new StorageHubClient(); client = new StorageHubClient();
rootDirectory = client.getWSRoot(); rootDirectory = client.getWSRoot();
cache = new Cache2kBuilder<String, ItemContainer<Item>>() {} cache = new Cache2kBuilder<String, ItemContainer<Item>>() {}
@ -81,7 +84,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public synchronized int write(String path, Pointer buf, long size, long offset, FuseFileInfo fi) { public synchronized int write(String path, Pointer buf, long size, long offset, FuseFileInfo fi) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace("{}) calling write {} - {} ",Thread.currentThread().getName(), size , offset); logger.trace("{}) calling write {} - {} ",Thread.currentThread().getName(), size , offset);
SHFile file = tempFiles.get(path); SHFile file = tempFiles.get(path);
@ -110,7 +113,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public synchronized int create(final String path, @mode_t long mode, FuseFileInfo fi) { public synchronized int create(final String path, @mode_t long mode, FuseFileInfo fi) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace(Thread.currentThread().getName()+" ) calling create "+path); logger.trace(Thread.currentThread().getName()+" ) calling create "+path);
if (pathUtils.getPath(path) != null) { if (pathUtils.getPath(path) != null) {
@ -163,7 +166,7 @@ public class StorageHubFS extends FuseStubFS {
public int getattr(String path, FileStat stat) { public int getattr(String path, FileStat stat) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace(Thread.currentThread().getName()+" ) calling getattr "+path); logger.trace(Thread.currentThread().getName()+" ) calling getattr "+path);
if (Objects.equals(path, "/") || path.contains("Trash") || path.equals("/"+VREFOLDERS_NAME)) { if (Objects.equals(path, "/") || path.contains("Trash") || path.equals("/"+VREFOLDERS_NAME)) {
@ -226,7 +229,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public int mkdir(String path, @mode_t long mode) { public int mkdir(String path, @mode_t long mode) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace(Thread.currentThread().getName()+" ) calling mkdir"); logger.trace(Thread.currentThread().getName()+" ) calling mkdir");
@ -256,7 +259,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public int read(String path, Pointer buf, @size_t long size, @off_t long offset, FuseFileInfo fi) { public int read(String path, Pointer buf, @size_t long size, @off_t long offset, FuseFileInfo fi) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace("!!! read called in path {} with size {} and offset {} and pointer address {}",path, size, offset, buf.address()); logger.trace("!!! read called in path {} with size {} and offset {} and pointer address {}",path, size, offset, buf.address());
@ -324,7 +327,7 @@ public class StorageHubFS extends FuseStubFS {
public int readdir(String path, Pointer buf, FuseFillDir filter, @off_t long offset, FuseFileInfo fi) { public int readdir(String path, Pointer buf, FuseFillDir filter, @off_t long offset, FuseFileInfo fi) {
logger.trace("readdir called"); logger.trace("readdir called");
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
logger.trace(Thread.currentThread().getName()+" ) calling readdir "+path); logger.trace(Thread.currentThread().getName()+" ) calling readdir "+path);
if (path.contains(".Trash")) return 0; if (path.contains(".Trash")) return 0;
@ -417,7 +420,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public int rename(String path, String newName) { public int rename(String path, String newName) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
ItemContainer<? extends Item> folder = pathUtils.getPath(path); ItemContainer<? extends Item> folder = pathUtils.getPath(path);
if (folder == null) { if (folder == null) {
@ -455,7 +458,7 @@ public class StorageHubFS extends FuseStubFS {
return -ErrorCodes.EACCES(); return -ErrorCodes.EACCES();
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
ItemContainer<? extends Item> folder = pathUtils.getPath(path); ItemContainer<? extends Item> folder = pathUtils.getPath(path);
if (folder == null) { if (folder == null) {
@ -465,7 +468,7 @@ public class StorageHubFS extends FuseStubFS {
return -ErrorCodes.ENOTDIR(); return -ErrorCodes.ENOTDIR();
} }
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
try { try {
checkSpecialFolderRemove(path); checkSpecialFolderRemove(path);
@ -494,7 +497,7 @@ public class StorageHubFS extends FuseStubFS {
@Override @Override
public int unlink(String path) { public int unlink(String path) {
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
ItemContainer<? extends Item> file = pathUtils.getPath(path); ItemContainer<? extends Item> file = pathUtils.getPath(path);
if (file == null) { if (file == null) {
@ -504,7 +507,7 @@ public class StorageHubFS extends FuseStubFS {
return -ErrorCodes.EISDIR(); return -ErrorCodes.EISDIR();
} }
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
try { try {
file.delete(); file.delete();
cache.remove(path); cache.remove(path);
@ -540,7 +543,7 @@ public class StorageHubFS extends FuseStubFS {
logger.info("truncate called {} ",path); logger.info("truncate called {} ",path);
ScopeProvider.instance.set(scope); ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token); AccessTokenProvider.instance.set(token);
cache.remove(path); cache.remove(path);
uploadFile(path); uploadFile(path);
return 0; return 0;