use of com.pspace.ifs.ksan.gw.identity.S3Bucket in project ksan by infinistor.
the class DeleteBucketReplication method process.
@Override
public void process() throws GWException {
logger.info(GWConstants.LOG_DELETE_BUCKET_REPLICATION_START);
String bucket = s3Parameter.getBucketName();
initBucketInfo(bucket);
S3Bucket s3Bucket = new S3Bucket();
s3Bucket.setCors(getBucketInfo().getCors());
s3Bucket.setAccess(getBucketInfo().getAccess());
s3Parameter.setBucket(s3Bucket);
GWUtils.checkCors(s3Parameter);
if (s3Parameter.isPublicAccess() && GWUtils.isIgnorePublicAcls(s3Parameter)) {
throw new GWException(GWErrorCode.ACCESS_DENIED, s3Parameter);
}
updateBucketReplication(bucket, "");
s3Parameter.getResponse().setStatus(HttpServletResponse.SC_NO_CONTENT);
}
use of com.pspace.ifs.ksan.gw.identity.S3Bucket in project ksan by infinistor.
the class DeleteObjects method process.
@Override
public void process() throws GWException {
logger.info(GWConstants.LOG_DELETE_OBJECTS_START);
String bucket = s3Parameter.getBucketName();
initBucketInfo(bucket);
S3Bucket s3Bucket = new S3Bucket();
s3Bucket.setCors(getBucketInfo().getCors());
s3Bucket.setAccess(getBucketInfo().getAccess());
s3Parameter.setBucket(s3Bucket);
GWUtils.checkCors(s3Parameter);
if (s3Parameter.isPublicAccess() && GWUtils.isIgnorePublicAcls(s3Parameter)) {
throw new GWException(GWErrorCode.ACCESS_DENIED, s3Parameter);
}
checkGrantBucketOwner(s3Parameter.isPublicAccess(), String.valueOf(s3Parameter.getUser().getUserId()), GWConstants.GRANT_WRITE);
DataDeleteObjects dataDeleteObjects = new DataDeleteObjects(s3Parameter);
dataDeleteObjects.extract();
String deleteXml = dataDeleteObjects.getDeleteXml();
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
try {
DeleteMultipleObjectsRequest deleteMultipleObjectsRequest = new XmlMapper().readValue(deleteXml, DeleteMultipleObjectsRequest.class);
Collection<Objects> objectNames = new ArrayList<>();
if (deleteMultipleObjectsRequest.objects != null) {
for (DeleteMultipleObjectsRequest.S3Object s3Object : deleteMultipleObjectsRequest.objects) {
Objects object = new Objects();
object.objectName = s3Object.key;
if (Strings.isNullOrEmpty(s3Object.versionId)) {
object.versionId = GWConstants.VERSIONING_DISABLE_TAIL;
} else if (GWConstants.VERSIONING_DISABLE_TAIL.equalsIgnoreCase(s3Object.versionId)) {
object.versionId = GWConstants.VERSIONING_DISABLE_TAIL;
} else {
object.versionId = s3Object.versionId;
}
objectNames.add(object);
}
}
Writer writer = s3Parameter.getResponse().getWriter();
s3Parameter.getResponse().setContentType(GWConstants.XML_CONTENT_TYPE);
XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(writer);
xmlStreamWriter.writeStartDocument();
xmlStreamWriter.writeStartElement(GWConstants.DELETE_RESULT);
xmlStreamWriter.writeDefaultNamespace(GWConstants.AWS_XMLNS);
logger.debug(GWConstants.LOG_DELETE_OBJECTS_SIZE, objectNames.size());
for (Objects object : objectNames) {
deleteObject(s3Parameter, object.objectName, object.versionId, xmlStreamWriter, deleteMultipleObjectsRequest.quiet);
// xmlStreamWriter.flush(); // In Tomcat, if you use flush(), you lose connection. jakarta, need to check
}
xmlStreamWriter.writeEndElement();
xmlStreamWriter.flush();
} catch (JsonParseException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
} catch (JacksonException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
} catch (IOException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
} catch (XMLStreamException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
}
s3Parameter.getResponse().setStatus(HttpServletResponse.SC_OK);
}
use of com.pspace.ifs.ksan.gw.identity.S3Bucket in project ksan by infinistor.
the class DeletePublicAccessBlock method process.
@Override
public void process() throws GWException {
logger.info(GWConstants.LOG_DELETE_BUCKET_PUBLIC_ACCESS_BLOCK_START);
String bucket = s3Parameter.getBucketName();
initBucketInfo(bucket);
S3Bucket s3Bucket = new S3Bucket();
s3Bucket.setCors(getBucketInfo().getCors());
s3Bucket.setAccess(getBucketInfo().getAccess());
s3Parameter.setBucket(s3Bucket);
GWUtils.checkCors(s3Parameter);
if (s3Parameter.isPublicAccess() && GWUtils.isIgnorePublicAcls(s3Parameter)) {
throw new GWException(GWErrorCode.ACCESS_DENIED, s3Parameter);
}
updateBucketAccess(bucket, "");
s3Parameter.getResponse().setStatus(HttpServletResponse.SC_NO_CONTENT);
}
use of com.pspace.ifs.ksan.gw.identity.S3Bucket in project ksan by infinistor.
the class GetBucketCors method process.
@Override
public void process() throws GWException {
logger.info(GWConstants.LOG_GET_BUCKET_CORS_START);
String bucket = s3Parameter.getBucketName();
initBucketInfo(bucket);
S3Bucket s3Bucket = new S3Bucket();
s3Bucket.setCors(getBucketInfo().getCors());
s3Bucket.setAccess(getBucketInfo().getAccess());
s3Parameter.setBucket(s3Bucket);
GWUtils.checkCors(s3Parameter);
if (s3Parameter.isPublicAccess() && GWUtils.isIgnorePublicAcls(s3Parameter)) {
throw new GWException(GWErrorCode.ACCESS_DENIED, s3Parameter);
}
checkGrantBucketOwner(s3Parameter.isPublicAccess(), String.valueOf(s3Parameter.getUser().getUserId()), GWConstants.GRANT_READ_ACP);
String cors = getBucketInfo().getCors();
logger.debug(GWConstants.LOG_GET_BUCKET_CORS, cors);
if (Strings.isNullOrEmpty(cors)) {
throw new GWException(GWErrorCode.NO_SUCH_CORS_CONFIGURATION, s3Parameter);
}
try {
if (!Strings.isNullOrEmpty(cors)) {
s3Parameter.getResponse().setContentType(GWConstants.XML_CONTENT_TYPE);
s3Parameter.getResponse().getOutputStream().write(cors.getBytes());
}
} catch (IOException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
}
s3Parameter.getResponse().setStatus(HttpServletResponse.SC_OK);
}
use of com.pspace.ifs.ksan.gw.identity.S3Bucket in project ksan by infinistor.
the class GetBucketLocation method process.
@Override
public void process() throws GWException {
logger.info(GWConstants.LOG_GET_BUCKET_LOCATION_START);
String bucket = s3Parameter.getBucketName();
initBucketInfo(bucket);
S3Bucket s3Bucket = new S3Bucket();
s3Bucket.setCors(getBucketInfo().getCors());
s3Bucket.setAccess(getBucketInfo().getAccess());
s3Parameter.setBucket(s3Bucket);
GWUtils.checkCors(s3Parameter);
if (s3Parameter.isPublicAccess() && GWUtils.isIgnorePublicAcls(s3Parameter)) {
throw new GWException(GWErrorCode.ACCESS_DENIED, s3Parameter);
}
checkGrantBucketOwner(s3Parameter.isPublicAccess(), String.valueOf(s3Parameter.getUser().getUserId()), GWConstants.GRANT_READ_ACP);
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
try (Writer writer = s3Parameter.getResponse().getWriter()) {
s3Parameter.getResponse().setContentType(GWConstants.XML_CONTENT_TYPE);
XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(writer);
xmlStreamWriter.writeStartDocument();
xmlStreamWriter.writeStartElement(GWConstants.LOCATION_CONSTRAINT);
xmlStreamWriter.writeDefaultNamespace(GWConstants.AWS_XMLNS);
xmlStreamWriter.writeEndElement();
xmlStreamWriter.flush();
} catch (XMLStreamException | IOException e) {
PrintStack.logging(logger, e);
throw new GWException(GWErrorCode.SERVER_ERROR, s3Parameter);
}
}
Aggregations