From d9d777cbb4a426e996fe7fa04e28561d6eaa0707 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 10 Dec 2020 13:51:12 +0100 Subject: [RecompressArchive] Add forceRoot flag to chown/chgrp to root --- .../java/org/openslx/satserver/util/Archive.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/openslx/satserver/util/Archive.java') diff --git a/src/main/java/org/openslx/satserver/util/Archive.java b/src/main/java/org/openslx/satserver/util/Archive.java index e52a5f6..86b9955 100644 --- a/src/main/java/org/openslx/satserver/util/Archive.java +++ b/src/main/java/org/openslx/satserver/util/Archive.java @@ -101,7 +101,8 @@ public class Archive } } - public static TarArchiveEntry createTarArchiveEntry( ArchiveEntry inEntry, int defaultUser, int defaultGroup, int defaultDirMode, int defaultFileMode ) + public static TarArchiveEntry createTarArchiveEntry( ArchiveEntry inEntry, + int defaultUser, int defaultGroup, int defaultDirMode, int defaultFileMode, boolean overrideUserGroup ) { String name = inEntry.getName(); if ( Util.isEmpty( name ) ) @@ -122,6 +123,18 @@ public class Archive ( (TarArchiveEntry)inEntry ).writeEntryHeader( buffer ); outEntry.parseTarHeader( buffer ); outEntry.setName( name ); // Reset, as this was overwritten + if ( overrideUserGroup ) { + // Always replace these + outEntry.setUserId( defaultUser ); + outEntry.setGroupId( defaultGroup ); + // TODO + if ( defaultUser == 0 ) { + outEntry.setUserName( "root" ); + } + if ( defaultGroup == 0 ) { + outEntry.setGroupName( "root" ); + } + } } else if ( inEntry instanceof ArArchiveEntry ) { // Source is ar - has most of the stuff tar supports; transform outEntry.setIds( ( (ArArchiveEntry)inEntry ).getUserId(), ( (ArArchiveEntry)inEntry ).getGroupId() ); @@ -162,6 +175,12 @@ public class Archive } return outEntry; } + + public static TarArchiveEntry createTarArchiveEntry( ArchiveEntry inEntry, + int defaultUser, int defaultGroup, int defaultDirMode, int defaultFileMode ) + { + return createTarArchiveEntry( inEntry, defaultUser, defaultGroup, defaultDirMode, defaultFileMode, false ); + } public static boolean tarAddFile( TarArchiveOutputStream tar, String inArchiveFileName, File sourceFile, int mode ) { -- cgit v1.2.3-55-g7522