profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/overheadhunter/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Sebastian Stenzel overheadhunter @cryptomator Bonn, Germany https://sebastianstenzel.de

cryptomator/docs 16

Cryptomator Documentation

swiesend/secret-service 14

A Java library for storing secrets under linux in the gnome-keyring over D-Bus. Like libsecret, but for Java.

overheadhunter/daggerfx 9

The Dagger coffee example applied to a JavaFX application

overheadhunter/FXThreads 7

Switching main and background threads in JavaFX made easy.

overheadhunter/woottools 5

Lean mootools-based framework for hashbang-routing and JSON-based DOM definitions.

overheadhunter/jade-factory 4

Playground for a jade multi agent project

overheadhunter/CreateAppStoreBill 1

Simple Shell/AWK scripts and tex files to create bills for the German tax office from Apple's financial reports. Extends the original Perl-based script.

overheadhunter/homebrew 1

The missing package manager for OS X.

k-bach/whiteboard 0

Experimental Students Project

overheadhunter/appimage.github.io 0

Given an URL to an AppImage, AppImageHub inspects the AppImage and puts it into a community-maintained catalog

issue commentcryptomator/cryptomator

ElementaryOS: Windows are not decorated and not clickable

@infeo Are you sure this depends on https://github.com/elementary/gala/issues/693 ? Still having this issue on elementaryOS

infeo

comment created time in 11 hours

Pull request review commentcryptomator/cryptofs

Health-API: Implement OrphanDir.fix()

 private CiphertextFileType determineCiphertextFileType(Path ciphertextPath) { 			return CiphertextFileType.FILE; 		} 	}++	private static MessageDigest getSha1MessageDigest() {+		try {+			return MessageDigest.getInstance("SHA1");+		} catch (NoSuchAlgorithmException e) {+			throw new InstantiationError("Every JVM needs to provide a SHA1 implementation.");

Fixed in 06d7933

infeo

comment created time in 14 hours

push eventcryptomator/cryptofs

Armin Schrenk

commit sha 06d79336643ae1b0b5c0e374e4116a00ee5b956d

Throw exception instead of error.

view details

push time in 14 hours

Pull request review commentcryptomator/cryptofs

Health-API: Implement OrphanDir.fix()

  */ public class OrphanDir implements DiagnosticResult { +	private static final String FILE_PREFIX = "file";+	private static final String DIR_PREFIX = "directory";+	private static final String SYMLINK_PREFIX = "symlink";+	private static final String LONG_NAME_SUFFIX_BASE = "_withVeryLongName";+	private static final MessageDigest SHA1_HASHER;

Fixed in 833d613

infeo

comment created time in 15 hours

push eventcryptomator/cryptofs

Armin Schrenk

commit sha 833d61324bd1d847214f6ccd4f948bfde8b0ac6e

create new message digest sha1 for every fix() call & make some state independet methods static

view details

push time in 15 hours

issue commentcryptomator/cryptomator

File Conflict with Indesign 2021: Saved Files get corrupted while working with them

An alternative to WebDAV would be WinFSP.

A guide how to install and use it can be found here: https://community.cryptomator.org/t/winfsp-how-to-use-it/7980

wanderschaft

comment created time in 15 hours

issue commentcryptomator/cryptomator

File Conflict with Indesign 2021: Saved Files get corrupted while working with them

Same issue running cryptomator 1.5.16 on win10. Solved switching from dokany to webdav.

wanderschaft

comment created time in 16 hours

push eventcryptomator/android

Julian Raufelder

commit sha ae053b34d0e3fd836f883144c5b7b409685d9ac3

Fix build -.-

view details

push time in 17 hours

push eventcryptomator/cryptofs

Armin Schrenk

commit sha 6eec2c360beb0cb571493713686a3a5486510ab9

if step parent already exists, use it

view details

Armin Schrenk

commit sha 812135176d1fc47d15cfb90be3a7b0319f4897fb

add test that stepparent name is deterministically derived from orphan

view details

push time in 17 hours

issue closedcryptomator/android

Can't create bew vault in pcloud using google sign in Error 403: disallowed_useragent

Description

System Setup

  • Android version: x
  • Cryptomator version: 1.5.x
  • Cloud type: pCloud

Steps to Reproduce

  1. Add existing or create new vault
  2. Choose pCloud
  3. Add pCloud location
  4. Choose Google as sign in option

Expected Behavior

Cloud authentication takes place

Actual Behavior

<img src="https://user-images.githubusercontent.com/1786772/118472567-424f1600-b709-11eb-87a1-aa1fcb647046.png" height="600" />

Reproducibility

Always

closed time in 17 hours

jeremijulian

push eventcryptomator/android

Julian Raufelder

commit sha 46aec2022ad6acc1ebd4103258ef56807b59239e

#316 fix OAuth login in pCloud using Google By switching from WebView to real browser

view details

push time in 17 hours

Pull request review commentcryptomator/cryptofs

Health-API: Implement OrphanDir.fix()

 public String toString() { 	}  	// fix: create new dirId inside of L+F dir and rename existing dir accordingly.+	@Override+	public void fix(Path pathToVault, VaultConfig config, Masterkey masterkey, Cryptor cryptor) throws IOException {+		Path orphanedDir = pathToVault.resolve(Constants.DATA_DIR_NAME).resolve(this.dir);+		String orphanHash = dir.getParent().getFileName().toString() + dir.getFileName().toString(); //TODO: is this the way? -> if the process is midterm aborted and later retried files already exist!++		var stepParentDir = prepareCryptoFilesystem(pathToVault, cryptor.fileNameCryptor(), orphanHash);++		try (var orphanedContentStream = Files.newDirectoryStream(orphanedDir)) {+			//move resource to unfiddled dir in l+f and rename resource  (use dirId for associated data)+			AtomicInteger fileCounter = new AtomicInteger(1);+			AtomicInteger dirCounter = new AtomicInteger(1);+			AtomicInteger symlinkCounter = new AtomicInteger(1);+			String longNameSuffix = createClearnameToBeShortened(config.getShorteningThreshold());++			for (Path orphanedResource : orphanedContentStream) {+				var newClearName = switch (determineCiphertextFileType(orphanedResource)) {+					case FILE -> FILE_PREFIX + fileCounter.getAndIncrement();+					case DIRECTORY -> DIR_PREFIX + dirCounter.getAndIncrement();+					case SYMLINK -> SYMLINK_PREFIX + symlinkCounter.getAndIncrement();+				};+				adoptOrphanedResource(new Adoption(newClearName, orphanedResource), stepParentDir, cryptor.fileNameCryptor(), longNameSuffix);+			}+		}+		Files.delete(orphanedDir);+	}++	/* visisble for testing */+	CryptoPathMapper.CiphertextDirectory prepareCryptoFilesystem(Path pathToVault, FileNameCryptor cryptor, String clearStepParentDirName) throws IOException {+		Path dataDir = pathToVault.resolve(Constants.DATA_DIR_NAME);+		String rootDirHash = cryptor.hashDirectoryId(Constants.ROOT_DIR_ID);+		Path vaultCipherRootPath = dataDir.resolve(rootDirHash.substring(0, 2)).resolve(rootDirHash.substring(2)).toAbsolutePath();++		//create  if not existent with constant id+		String cipherRecoveryDirName = convertClearToCiphertext(cryptor, Constants.RECOVERY_DIR_NAME, Constants.ROOT_DIR_ID);+		Path cipherRecoveryDirFile = vaultCipherRootPath.resolve(cipherRecoveryDirName + "/" + Constants.DIR_FILE_NAME);+		if (Files.notExists(cipherRecoveryDirFile, LinkOption.NOFOLLOW_LINKS)) {+			Files.createDirectory(cipherRecoveryDirFile.getParent());+			Files.writeString(cipherRecoveryDirFile, Constants.RECOVERY_DIR_ID, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);+		} else {+			String uuid = Files.readString(cipherRecoveryDirFile, StandardCharsets.UTF_8);+			if (!uuid.equals(Constants.RECOVERY_DIR_ID)) {+				throw new FileAlreadyExistsException("Directory /" + Constants.RECOVERY_DIR_NAME + " already exists, but with wrong directory id.");+			}+		}+		String recoveryDirHash = cryptor.hashDirectoryId(Constants.RECOVERY_DIR_ID);+		Path cipherRecoveryDir = dataDir.resolve(recoveryDirHash.substring(0, 2)).resolve(recoveryDirHash.substring(2)).toAbsolutePath();+		Files.createDirectories(cipherRecoveryDir);++		//create deorphanedDirectory+		String cipherStepParentDirName = convertClearToCiphertext(cryptor, clearStepParentDirName, Constants.RECOVERY_DIR_ID);+		Path cipherStepParentDirFile = cipherRecoveryDir.resolve(cipherStepParentDirName + "/" + Constants.DIR_FILE_NAME);+		Files.createDirectory(cipherStepParentDirFile.getParent());+		var stepParentUUID = UUID.randomUUID().toString();+		Files.writeString(cipherStepParentDirFile, stepParentUUID, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);+		String stepParentDirHash = cryptor.hashDirectoryId(stepParentUUID);+		Path stepParentDir = dataDir.resolve(stepParentDirHash.substring(0, 2)).resolve(stepParentDirHash.substring(2)).toAbsolutePath();+		Files.createDirectories(stepParentDir);+		return new CryptoPathMapper.CiphertextDirectory(stepParentUUID, stepParentDir);+	}++	// visible for testing+	void adoptOrphanedResource(Adoption adoption, CryptoPathMapper.CiphertextDirectory stepParentDir, FileNameCryptor cryptor, String longNameSuffix) throws IOException {+		if (adoption.oldCipherPath.toString().endsWith(Constants.DEFLATED_FILE_SUFFIX)) {+			var newCipherName = convertClearToCiphertext(cryptor, adoption.newClearname + longNameSuffix, stepParentDir.dirId);+			var deflatedName = BaseEncoding.base64Url().encode(SHA1_HASHER.digest(newCipherName.getBytes(StandardCharsets.UTF_8))) + Constants.DEFLATED_FILE_SUFFIX;+			Path targetPath = stepParentDir.path.resolve(deflatedName);+			Files.move(adoption.oldCipherPath, targetPath, StandardCopyOption.ATOMIC_MOVE);++			//adjust name.c9s+			try (var fc = Files.newByteChannel(targetPath.resolve(Constants.INFLATED_FILE_NAME), StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {+				fc.write(ByteBuffer.wrap(newCipherName.getBytes(StandardCharsets.UTF_8)));+			}+		} else {+			var newCipherName = convertClearToCiphertext(cryptor, adoption.newClearname, stepParentDir.dirId);+			Path targetPath = stepParentDir.path.resolve(newCipherName);+			Files.move(adoption.oldCipherPath, targetPath, StandardCopyOption.ATOMIC_MOVE);+		}+	}++	// visible for testing+	record Adoption(String newClearname, Path oldCipherPath) {}++	private String createClearnameToBeShortened(int threshold) {+		int neededLength = threshold / 4 * 3 - 16;

Fixed in 6af26a6

infeo

comment created time in 19 hours

push eventcryptomator/cryptofs

Armin Schrenk

commit sha fa044d21eca97f379041d5c5a305943c01fa016c

adjust inline comments

view details

Armin Schrenk

commit sha 242e16e153260d1f130b813ba3b71c970a22091e

append to recovered files a run id to make continuation of runs possible

view details

Armin Schrenk

commit sha 6af26a62b8de23d8f1be9a9d346aefede37854d5

adjust exceed shortening threshold computation

view details

push time in 19 hours

MemberEvent

push eventcryptomator/integrations-mac

Cryptobot

commit sha 54c6b02af69808689e732996a4dcfda7a34b0342

New translations MacIntegrationsBundle.properties (Greek) [ci skip]

view details

push time in a day

Pull request review commentcryptomator/cryptofs

Health-API: Implement OrphanDir.fix()

 public void fix(Path pathToVault, VaultConfig config, Masterkey masterkey, Crypt 		Files.delete(orphanedDir); 	} +	CryptoPathMapper.CiphertextDirectory prepareCryptoFilesystem(Path pathToVault, FileNameCryptor cryptor, String clearStepParentDirName) throws IOException {+		Path dataDir = pathToVault.resolve(Constants.DATA_DIR_NAME);+		String rootDirHash = cryptor.hashDirectoryId(Constants.ROOT_DIR_ID);+		Path vaultCipherRootPath = dataDir.resolve(rootDirHash.substring(0, 2)).resolve(rootDirHash.substring(2)).toAbsolutePath();++		//create  if not existent with constant id+		String cipherRecoveryDirName = convertClearToCiphertext(cryptor, Constants.RECOVERY_DIR_NAME, Constants.ROOT_DIR_ID);+		Path cipherRecoveryDirFile = vaultCipherRootPath.resolve(cipherRecoveryDirName + "/" + Constants.DIR_FILE_NAME);+		Files.createDirectory(cipherRecoveryDirFile.getParent());

Fixed in 1d0be7d

infeo

comment created time in 2 days

push eventcryptomator/cryptofs

Armin Schrenk

commit sha ea25de5f51341f346e612fed809b0c8e50da6658

move sha1 computer into static variable

view details

Armin Schrenk

commit sha 3073111ee6e156c52e5e93afb6341b8309da35de

Add unit test

view details

Armin Schrenk

commit sha 1d0be7d36aa342581ce37f07a6cfa47f1fbb2a1a

throw exeception if a directory with recovery name but not recovery id exists

view details

Armin Schrenk

commit sha 3aca38c02886007a40aaa0f2f09ce78f0bb1e5f6

refactor fix method and add unit tests

view details

Armin Schrenk

commit sha 3c9afde5cbb6f357ded923f43ca3331763ef2a0e

add unit tests and clean up

view details

Armin Schrenk

commit sha 4ae135c54d916809b5a7ffd7e0cf6c6980fcd79a

don't follow links in messed up vaults

view details

Armin Schrenk

commit sha a1d5bc8cf5f5226922bdfd1e8d493dc8b0ed5978

more cleanup in unit tests

view details

Armin Schrenk

commit sha 979bfb341864909d774b39a60ebc9f2a1f5b874a

add unit test for fix()

view details

push time in 2 days

push eventcryptomator/cryptofs

Armin Schrenk

commit sha 58cec8ee3d2781ee192dfefedbf4794ddaeeab01

Introduce new constant dir id and Change preparation of fs for orphan dir fix * recovery dir for orphaned dirs gets special, constant dirID * don't open cryptofilesystem but do manual encryption

view details

push time in 3 days

push eventcryptomator/cryptomator

Julian Raufelder

commit sha f2fadafa6629f075fad535a1b434b7683a3273f2

Fix snyk.io badge in README due to switch to single maven module

view details

push time in 3 days

delete branch cryptomator/cryptomator

delete branch : feature/sign-src-tarball

delete time in 3 days

push eventcryptomator/cryptomator

Julian Raufelder

commit sha 74355b128a8ea1f0defe630e53efb69717b016b9

Sign tarball in release using GPG

view details

Julian Raufelder

commit sha b15cda260e35ca7f6a9a0cf4fa94c07ead89439c

Apply suggestions from code review Co-authored-by: Sebastian Stenzel <overheadhunter@users.noreply.github.com>

view details

Julian Raufelder

commit sha 08cbfd47eaa7f086afd4bd3fa0574e699f07c7a6

Prefix signature of tarball in release with cryptomator To apply convention of the other release assets

view details

Julian Raufelder

commit sha 067673279614fbed2de08182c79e43c30bf99eb2

Merge pull request #1693 from cryptomator/feature/sign-src-tarball Sign tarball in release using GPG

view details

push time in 3 days

PR merged cryptomator/cryptomator

Sign tarball in release using GPG

As some users build this project from source using a package manager like pacman on arch based linux distros, we could provide a GPG signature next to the source tarball, so that those package managers can automatically verify the signature of the downloaded sources and not check the SHA256 provided by the packager.

With this PR, a cryptomator-${{ github.ref }}.tar.gz.asc file e.g. cryptomator-1.6.0.tar.gz.asc will be added to the release assets.

+21 -2

0 comment

1 changed file

SailReal

pr closed time in 3 days

push eventcryptomator/cryptomator

Julian Raufelder

commit sha 08cbfd47eaa7f086afd4bd3fa0574e699f07c7a6

Prefix signature of tarball in release with cryptomator To apply convention of the other release assets

view details

push time in 3 days

push eventcryptomator/cryptomator

Julian Raufelder

commit sha b15cda260e35ca7f6a9a0cf4fa94c07ead89439c

Apply suggestions from code review Co-authored-by: Sebastian Stenzel <overheadhunter@users.noreply.github.com>

view details

push time in 3 days

PR opened cryptomator/cryptomator

Sign tarball in release using GPG

As some users build this project from source using a package manager like pacman on arch based linux distros, we could provide a GPG signature next to the source tarball, so that those package managers can automatically verify the signature of the downloaded sources and not check the SHA256 provided by the packager.

+23 -2

0 comment

1 changed file

pr created time in 3 days

push eventcryptomator/cryptomator

Julian Raufelder

commit sha 74355b128a8ea1f0defe630e53efb69717b016b9

Sign tarball in release using GPG

view details

push time in 3 days

create barnchcryptomator/cryptomator

branch : feature/sign-src-tarball

created branch time in 3 days

fork marcjulian/cookiemonster

A customizable Cookie Consent Banner for Angular. Built with Tailwind. GDPR & EU ready! (WIP)

https://garygrossgarten.github.io/cookiemonster/

fork in 3 days

push eventcryptomator/integrations-mac

Cryptobot

commit sha db150e8a718605087a14b02d8f6a067fc843f9de

New translations MacIntegrationsBundle.properties (Japanese) [ci skip]

view details

push time in 4 days