Search in sources :

Example 11 with Secured

use of org.codelibs.fess.annotation.Secured in project fess by codelibs.

the class AdminDataconfigAction method createnew.

// ===================================================================================
// Edit Execute
// ============
// -----------------------------------------------------
// Entry Page
// ----------
@Execute
@Secured({ ROLE })
public HtmlResponse createnew() {
    saveToken();
    return asEditHtml().useForm(CreateForm.class, op -> {
        op.setup(form -> {
            form.initialize();
            ComponentUtil.getCrawlingConfigHelper().getDefaultConfig(ConfigType.DATA).ifPresent(entity -> {
                copyBeanToBean(entity, form, copyOp -> {
                    copyOp.excludeNull();
                    copyOp.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n]));
                });
                final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                form.permissions = stream(entity.getPermissions()).get(stream -> stream.map(s -> permissionHelper.decode(s)).filter(StringUtil::isNotBlank).distinct().collect(Collectors.joining("\n")));
                form.virtualHosts = stream(entity.getVirtualHosts()).get(stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).collect(Collectors.joining("\n")));
                form.name = null;
            });
            form.crudMode = CrudMode.CREATE;
        });
    });
}
Also used : Constants(org.codelibs.fess.Constants) OptionalThing(org.dbflute.optional.OptionalThing) HashMap(java.util.HashMap) PermissionHelper(org.codelibs.fess.helper.PermissionHelper) ActionRuntime(org.lastaflute.web.ruts.process.ActionRuntime) RenderDataUtil(org.codelibs.fess.util.RenderDataUtil) ArrayList(java.util.ArrayList) DataConfigPager(org.codelibs.fess.app.pager.DataConfigPager) StreamUtil.split(org.codelibs.core.stream.StreamUtil.split) CrudMode(org.codelibs.fess.app.web.CrudMode) FessAdminAction(org.codelibs.fess.app.web.base.FessAdminAction) Map(java.util.Map) RenderData(org.lastaflute.web.response.render.RenderData) RoleTypeService(org.codelibs.fess.app.service.RoleTypeService) HtmlResponse(org.lastaflute.web.response.HtmlResponse) ConfigType(org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigType) DataConfigService(org.codelibs.fess.app.service.DataConfigService) DataConfig(org.codelibs.fess.es.config.exentity.DataConfig) Secured(org.codelibs.fess.annotation.Secured) StreamUtil.stream(org.codelibs.core.stream.StreamUtil.stream) OptionalEntity(org.dbflute.optional.OptionalEntity) Resource(javax.annotation.Resource) StringUtil(org.codelibs.core.lang.StringUtil) Collectors(java.util.stream.Collectors) List(java.util.List) Stream(java.util.stream.Stream) ComponentUtil(org.codelibs.fess.util.ComponentUtil) SystemHelper(org.codelibs.fess.helper.SystemHelper) DataStoreFactory(org.codelibs.fess.ds.DataStoreFactory) Execute(org.lastaflute.web.Execute) PermissionHelper(org.codelibs.fess.helper.PermissionHelper) StringUtil(org.codelibs.core.lang.StringUtil) Execute(org.lastaflute.web.Execute) Secured(org.codelibs.fess.annotation.Secured)

Example 12 with Secured

use of org.codelibs.fess.annotation.Secured in project fess by codelibs.

the class AdminDesignAction method upload.

@Execute
@Secured({ ROLE })
public HtmlResponse upload(final UploadForm form) {
    validate(form, messages -> {
    }, () -> asListHtml(form));
    verifyToken(this::asListHtml);
    final String uploadedFileName = form.designFile.getFileName();
    String fileName = form.designFileName;
    if (StringUtil.isBlank(fileName)) {
        fileName = uploadedFileName;
        try {
            int pos = fileName.indexOf('/');
            if (pos >= 0) {
                fileName = fileName.substring(pos + 1);
            }
            pos = fileName.indexOf('\\');
            if (pos >= 0) {
                fileName = fileName.substring(pos + 1);
            }
        } catch (final Exception e) {
            throwValidationError(messages -> messages.addErrorsDesignFileNameIsInvalid("designFile"), this::asListHtml);
        }
    }
    if (StringUtil.isBlank(fileName)) {
        throwValidationError(messages -> messages.addErrorsDesignFileNameIsNotFound("designFile"), this::asListHtml);
    }
    File uploadFile;
    // normalize filename
    if (checkFileType(fileName, fessConfig.getSupportedUploadedMediaExtentionsAsArray()) && checkFileType(uploadedFileName, fessConfig.getSupportedUploadedMediaExtentionsAsArray())) {
        uploadFile = new File(getServletContext().getRealPath("/images/" + fileName));
    } else if (checkFileType(fileName, fessConfig.getSupportedUploadedCssExtentionsAsArray()) && checkFileType(uploadedFileName, fessConfig.getSupportedUploadedCssExtentionsAsArray())) {
        uploadFile = new File(getServletContext().getRealPath("/css/" + fileName));
    } else if (checkFileType(fileName, fessConfig.getSupportedUploadedJsExtentionsAsArray()) && checkFileType(uploadedFileName, fessConfig.getSupportedUploadedJsExtentionsAsArray())) {
        uploadFile = new File(getServletContext().getRealPath("/js/" + fileName));
    } else if (fessConfig.isSupportedUploadedFile(fileName) || fessConfig.isSupportedUploadedFile(uploadedFileName)) {
        uploadFile = ResourceUtil.getResourceAsFileNoException(fileName);
        if (uploadFile == null) {
            throwValidationError(messages -> messages.addErrorsDesignFileNameIsNotFound("designFileName"), this::asListHtml);
            return null;
        }
    } else {
        throwValidationError(messages -> messages.addErrorsDesignFileIsUnsupportedType("designFileName"), this::asListHtml);
        return null;
    }
    final File parentFile = uploadFile.getParentFile();
    if (!parentFile.exists() && !parentFile.mkdirs()) {
        logger.warn("Could not create {}", parentFile.getAbsolutePath());
    }
    try {
        write(uploadFile.getAbsolutePath(), form.designFile.getFileData());
        final String currentFileName = fileName;
        saveInfo(messages -> messages.addSuccessUploadDesignFile(GLOBAL, currentFileName));
    } catch (final Exception e) {
        logger.error("Failed to write an image file: {}", fileName, e);
        throwValidationError(messages -> messages.addErrorsFailedToWriteDesignImageFile(GLOBAL), this::asListHtml);
    }
    return redirect(getClass());
}
Also used : Constants(org.codelibs.fess.Constants) Secured(org.codelibs.fess.annotation.Secured) URLDecoder(java.net.URLDecoder) FessSystemException(org.codelibs.fess.exception.FessSystemException) ResourceUtil(org.codelibs.core.io.ResourceUtil) OptionalEntity(org.dbflute.optional.OptionalEntity) StringUtil(org.codelibs.core.lang.StringUtil) Pair(org.codelibs.core.misc.Pair) FileUtils(org.apache.commons.io.FileUtils) FileInputStream(java.io.FileInputStream) ActionRuntime(org.lastaflute.web.ruts.process.ActionRuntime) File(java.io.File) ArrayList(java.util.ArrayList) List(java.util.List) StreamResponse(org.lastaflute.web.response.StreamResponse) Logger(org.apache.logging.log4j.Logger) FileUtil(org.codelibs.core.io.FileUtil) ComponentUtil(org.codelibs.fess.util.ComponentUtil) Locale(java.util.Locale) FessAdminAction(org.codelibs.fess.app.web.base.FessAdminAction) Execute(org.lastaflute.web.Execute) HtmlResponse(org.lastaflute.web.response.HtmlResponse) UnsupportedEncodingException(java.io.UnsupportedEncodingException) LogManager(org.apache.logging.log4j.LogManager) File(java.io.File) FessSystemException(org.codelibs.fess.exception.FessSystemException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Execute(org.lastaflute.web.Execute) Secured(org.codelibs.fess.annotation.Secured)

Example 13 with Secured

use of org.codelibs.fess.annotation.Secured in project fess by codelibs.

the class AdminDesignAction method editAsUseDefault.

@Execute
@Secured({ ROLE })
public HtmlResponse editAsUseDefault(final EditForm form) {
    final String jspType = "orig/view";
    final File jspFile = getJspFile(form.fileName, jspType);
    try {
        form.content = new String(FileUtil.readBytes(jspFile), Constants.UTF_8);
    } catch (final UnsupportedEncodingException e) {
        throw new FessSystemException("Invalid encoding", e);
    }
    saveToken();
    return asEditHtml(form);
}
Also used : UnsupportedEncodingException(java.io.UnsupportedEncodingException) File(java.io.File) FessSystemException(org.codelibs.fess.exception.FessSystemException) Execute(org.lastaflute.web.Execute) Secured(org.codelibs.fess.annotation.Secured)

Example 14 with Secured

use of org.codelibs.fess.annotation.Secured in project fess by codelibs.

the class AdminDesignAction method download.

@Execute
@Secured({ ROLE, ROLE + VIEW })
public StreamResponse download(final FileAccessForm form) {
    final File file = getTargetFile(form.fileName).get();
    if (file == null) {
        throwValidationError(messages -> messages.addErrorsTargetFileDoesNotExist(GLOBAL, form.fileName), this::asListHtml);
        return null;
    }
    validate(form, messages -> {
    }, this::asListHtml);
    verifyTokenKeep(this::asListHtml);
    return asStream(file.getName()).contentTypeOctetStream().stream(out -> {
        try (FileInputStream fis = new FileInputStream(file)) {
            out.write(fis);
        }
    });
}
Also used : File(java.io.File) FileInputStream(java.io.FileInputStream) Execute(org.lastaflute.web.Execute) Secured(org.codelibs.fess.annotation.Secured)

Example 15 with Secured

use of org.codelibs.fess.annotation.Secured in project fess by codelibs.

the class AdminBackupAction method download.

@Execute
@Secured({ ROLE, ROLE + VIEW })
public ActionResponse download(final String id) {
    if (stream(fessConfig.getIndexBackupAllTargets()).get(stream -> stream.anyMatch(s -> s.equals(id)))) {
        if ("system.properties".equals(id)) {
            return asStream(id).contentTypeOctetStream().stream(out -> {
                try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                    ComponentUtil.getSystemProperties().store(baos, id);
                    try (final InputStream in = new ByteArrayInputStream(baos.toByteArray())) {
                        out.write(in);
                    }
                }
            });
        }
        if (id.endsWith(NDJSON_EXTENTION)) {
            final String name = id.substring(0, id.length() - NDJSON_EXTENTION.length());
            if ("search_log".equals(name)) {
                return writeNdjsonResponse(id, getSearchLogNdjsonWriteCall());
            }
            if ("user_info".equals(name)) {
                return writeNdjsonResponse(id, getUserInfoNdjsonWriteCall());
            }
            if ("click_log".equals(name)) {
                return writeNdjsonResponse(id, getClickLogNdjsonWriteCall());
            } else if ("favorite_log".equals(name)) {
                return writeNdjsonResponse(id, getFavoriteLogNdjsonWriteCall());
            }
        } else if ("fess.json".equals(id)) {
            return asStream(id).contentTypeOctetStream().stream(out -> {
                final Path fessJsonPath = getFessJsonPath();
                try (final InputStream in = Files.newInputStream(fessJsonPath)) {
                    out.write(in);
                }
            });
        } else if ("doc.json".equals(id)) {
            return asStream(id).contentTypeOctetStream().stream(out -> {
                final Path fessJsonPath = getDocJsonPath();
                try (final InputStream in = Files.newInputStream(fessJsonPath)) {
                    out.write(in);
                }
            });
        } else {
            final String index;
            final String filename;
            if (id.endsWith(".bulk")) {
                index = id.substring(0, id.length() - 5);
                filename = id;
            } else {
                index = id;
                filename = id + ".bulk";
            }
            return asStream(filename).contentTypeOctetStream().stream(out -> {
                try (final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out.stream(), Constants.CHARSET_UTF_8))) {
                    SearchEngineUtil.scroll(index, hit -> {
                        try {
                            writer.write("{\"index\":{\"_index\":\"" + hit.getIndex() + "\",\"_id\":\"" + StringEscapeUtils.escapeJson(hit.getId()) + "\"}}\n");
                            writer.write(hit.getSourceAsString());
                            writer.write("\n");
                        } catch (final IOException e) {
                            throw new IORuntimeException(e);
                        }
                        return true;
                    });
                    writer.flush();
                }
            });
        }
    }
    throwValidationError(messages -> messages.addErrorsCouldNotFindBackupIndex(GLOBAL), this::asListHtml);
    // no-op
    return redirect(getClass());
}
Also used : Arrays(java.util.Arrays) Constants(org.codelibs.fess.Constants) IORuntimeException(org.codelibs.core.exception.IORuntimeException) AsyncManager(org.lastaflute.core.magic.async.AsyncManager) ActionRuntime(org.lastaflute.web.ruts.process.ActionRuntime) RenderDataUtil(org.codelibs.fess.util.RenderDataUtil) FileConfigBhv(org.codelibs.fess.es.config.exbhv.FileConfigBhv) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) StreamResponse(org.lastaflute.web.response.StreamResponse) ByteArrayInputStream(java.io.ByteArrayInputStream) FessAdminAction(org.codelibs.fess.app.web.base.FessAdminAction) Map(java.util.Map) LabelTypeBhv(org.codelibs.fess.es.config.exbhv.LabelTypeBhv) FavoriteLogBhv(org.codelibs.fess.es.log.exbhv.FavoriteLogBhv) GsaConfigParser(org.codelibs.fess.util.GsaConfigParser) CopyUtil(org.codelibs.core.io.CopyUtil) TypeReference(com.fasterxml.jackson.core.type.TypeReference) Path(java.nio.file.Path) Secured(org.codelibs.fess.annotation.Secured) UserInfoBhv(org.codelibs.fess.es.log.exbhv.UserInfoBhv) Resource(javax.annotation.Resource) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) ActionResponse(org.lastaflute.web.response.ActionResponse) List(java.util.List) Logger(org.apache.logging.log4j.Logger) ComponentUtil(org.codelibs.fess.util.ComponentUtil) Writer(java.io.Writer) CurlResponse(org.codelibs.curl.CurlResponse) ByteArrayOutputStream(java.io.ByteArrayOutputStream) LocalDateTime(java.time.LocalDateTime) Pair(org.codelibs.core.misc.Pair) HashMap(java.util.HashMap) ResourceUtil(org.codelibs.fess.util.ResourceUtil) OutputStreamWriter(java.io.OutputStreamWriter) SearchEngineUtil(org.codelibs.fess.util.SearchEngineUtil) HtmlResponse(org.lastaflute.web.response.HtmlResponse) OutputStream(java.io.OutputStream) InputSource(org.xml.sax.InputSource) StreamUtil.stream(org.codelibs.core.stream.StreamUtil.stream) Files(java.nio.file.Files) BufferedWriter(java.io.BufferedWriter) ClickLogBhv(org.codelibs.fess.es.log.exbhv.ClickLogBhv) StringUtil(org.codelibs.core.lang.StringUtil) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) StringEscapeUtils(org.apache.commons.text.StringEscapeUtils) FileInputStream(java.io.FileInputStream) InputStreamReader(java.io.InputStreamReader) File(java.io.File) Consumer(java.util.function.Consumer) SearchLogBhv(org.codelibs.fess.es.log.exbhv.SearchLogBhv) WebConfigBhv(org.codelibs.fess.es.config.exbhv.WebConfigBhv) DateTimeFormatter(java.time.format.DateTimeFormatter) Execute(org.lastaflute.web.Execute) BufferedReader(java.io.BufferedReader) LogManager(org.apache.logging.log4j.LogManager) InputStream(java.io.InputStream) Path(java.nio.file.Path) IORuntimeException(org.codelibs.core.exception.IORuntimeException) ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) OutputStreamWriter(java.io.OutputStreamWriter) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) BufferedWriter(java.io.BufferedWriter) Execute(org.lastaflute.web.Execute) Secured(org.codelibs.fess.annotation.Secured)

Aggregations

Secured (org.codelibs.fess.annotation.Secured)24 Execute (org.lastaflute.web.Execute)23 FessAdminAction (org.codelibs.fess.app.web.base.FessAdminAction)14 ComponentUtil (org.codelibs.fess.util.ComponentUtil)14 HtmlResponse (org.lastaflute.web.response.HtmlResponse)14 ActionRuntime (org.lastaflute.web.ruts.process.ActionRuntime)14 StringUtil (org.codelibs.core.lang.StringUtil)13 Constants (org.codelibs.fess.Constants)12 RenderDataUtil (org.codelibs.fess.util.RenderDataUtil)10 File (java.io.File)9 List (java.util.List)9 Resource (javax.annotation.Resource)9 LogManager (org.apache.logging.log4j.LogManager)9 Logger (org.apache.logging.log4j.Logger)9 Collectors (java.util.stream.Collectors)8 StreamUtil.stream (org.codelibs.core.stream.StreamUtil.stream)8 OptionalEntity (org.dbflute.optional.OptionalEntity)8 InputStream (java.io.InputStream)7 FessSystemException (org.codelibs.fess.exception.FessSystemException)7 SystemHelper (org.codelibs.fess.helper.SystemHelper)7