/******************************************************************************* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. *******************************************************************************/ package at.gv.egovernment.moa.id.configuration.validation.oa; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import at.gv.egovernment.moa.id.commons.validation.ValidationHelper; import at.gv.egovernment.moa.id.configuration.Constants; import at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig; import at.gv.egovernment.moa.id.configuration.data.oa.OATargetConfiguration; import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; import at.gv.egovernment.moa.id.configuration.validation.CompanyNumberValidator; import at.gv.egovernment.moa.util.MiscUtil; public class OATargetConfigValidation { private static final Logger log = Logger.getLogger(OATargetConfigValidation.class); public List validate(OATargetConfiguration form, boolean isAdmin, OAGeneralConfig general, HttpServletRequest request) { List errors = new ArrayList(); String check; if (general.isBusinessService()) { //check identification type check = form.getIdentificationType(); if (!form.getIdentificationTypeList().contains(check)) { log.info("IdentificationType is not known."); errors.add(LanguageHelper.getErrorString("validation.general.stork.sptarget", request)); } //check identification number check = form.getIdentificationNumber(); if (MiscUtil.isEmpty(check)) { log.info("Empty IdentificationNumber"); errors.add(LanguageHelper.getErrorString("validation.general.identificationnumber.empty", request)); } else { if (ValidationHelper.containsNotValidCharacter(check, false)) { log.warn("IdentificationNumber contains potentail XSS characters: " + check); errors.add(LanguageHelper.getErrorString("validation.general.identificationnumber.valid", new Object[] {ValidationHelper.getNotValidCharacter(false)}, request )); } if (form.getIdentificationType().equals(Constants.IDENIFICATIONTYPE_FN)) { CompanyNumberValidator val = new CompanyNumberValidator(); if (!val.validate(check)) { log.info("Not valid CompanyNumber"); errors.add(LanguageHelper.getErrorString("validation.general.identificationnumber.fn.valid", request)); } } else if (form.getIdentificationType().equals(Constants.IDENIFICATIONTYPE_EIDAS)) { Pattern pattern = Pattern.compile("[A-Z,a-z]{2}\\+[A-Z,a-z]{2}"); Matcher matcher = pattern.matcher(check); if (!matcher.matches()) { log.info("Not valid eIDAS Target"); errors.add(LanguageHelper.getErrorString("validation.general.identificationnumber.eidas.valid", request)); } } } } else { check = form.getTarget_subsector(); if (MiscUtil.isNotEmpty(check)) { if (!ValidationHelper.isValidAdminTarget(check)) { log.info("Not valid Target-Subsector"); errors.add(LanguageHelper.getErrorString("validation.general.target.subsector.valid", request)); } } if (!isAdmin) { //check PublicURL Prefix allows PublicService if (!ValidationHelper.isPublicServiceAllowed(general.getIdentifier())) { log.warn("PublicURLPrefix does not allow PublicService: " + general.getIdentifier()); errors.add(LanguageHelper.getErrorString("validation.general.target.publicserviceurl", new Object[] {general.getIdentifier()}, request )); general.setBusinessService(true); return errors; } //check Target check = form.getTarget(); if (MiscUtil.isEmpty(check)) { log.info("Empty Target"); errors.add(LanguageHelper.getErrorString("validation.general.target.empty", request)); } else { if (!ValidationHelper.isValidTarget(check)) { log.info("Not valid Target"); errors.add(LanguageHelper.getErrorString("validation.general.target.valid", request)); } } } else { //check targetFrindlyName(); check = form.getTargetFriendlyName(); if (MiscUtil.isNotEmpty(check)) { if (ValidationHelper.containsNotValidCharacter(check, false)) { log.warn("TargetFriendlyName contains potentail XSS characters: " + check); errors.add(LanguageHelper.getErrorString("validation.general.targetfriendlyname", new Object[] {ValidationHelper.getNotValidCharacter(false)}, request )); } } if (MiscUtil.isEmpty(form.getTarget()) && MiscUtil.isEmpty(form.getTarget_admin())) { log.info("Empty Target"); errors.add(LanguageHelper.getErrorString("validation.general.target.empty", request)); } //check Target check = form.getTarget(); if (MiscUtil.isNotEmpty(check)) { if (!ValidationHelper.isValidTarget(check)) { log.info("Not valid Target"); errors.add(LanguageHelper.getErrorString("validation.general.target.valid", request)); } } //check Admin Target check = form.getTarget_admin(); if (MiscUtil.isNotEmpty(check)) { if (!ValidationHelper.isValidAdminTarget(check)) { log.info("Not valid Target"); errors.add(LanguageHelper.getErrorString("validation.general.target.admin.valid", request)); } } } } //foreign bPK configuration return errors; } }