Moved encoding to properties
This commit is contained in:
parent
c77e22e641
commit
a827bd0f6b
7 changed files with 25 additions and 13 deletions
|
|
@ -38,4 +38,6 @@ ct.load-dir=/opt/app/reports
|
||||||
ct.monitoring-interval=${MONITORING_INTERVAL:15}
|
ct.monitoring-interval=${MONITORING_INTERVAL:15}
|
||||||
# days
|
# days
|
||||||
ct.update-flags-interval=${UPDATE_FLAGS_INTERVAL:1}
|
ct.update-flags-interval=${UPDATE_FLAGS_INTERVAL:1}
|
||||||
ct.days-to-update-flags=${DAYS_TO_UPDATE_FLAGS:30}
|
ct.days-to-update-flags=${DAYS_TO_UPDATE_FLAGS:30}
|
||||||
|
|
||||||
|
ct.encoding=windows-1251
|
||||||
|
|
@ -7,6 +7,7 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||||
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.*;
|
import ru.nbch.credit_tracker.entities.response.errors.*;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
|
|
@ -19,11 +20,16 @@ import java.nio.charset.Charset;
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
private final SimpleMessageResolver messageResolver = new SimpleMessageResolver();
|
private final SimpleMessageResolver messageResolver = new SimpleMessageResolver();
|
||||||
|
private final String encoding;
|
||||||
|
|
||||||
|
public GlobalExceptionHandler(CreditTrackerSettings settings) {
|
||||||
|
this.encoding = settings.getEncoding();
|
||||||
|
}
|
||||||
|
|
||||||
@ExceptionHandler(value = MaxUploadSizeExceededException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
@ExceptionHandler(value = MaxUploadSizeExceededException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
public ResponseEntity<MonitoringError> handleMaxUploadSizeExceeded(MaxUploadSizeExceededException ex) {
|
public ResponseEntity<MonitoringError> handleMaxUploadSizeExceeded(MaxUploadSizeExceededException ex) {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(new MediaType("application", "xml", Charset.forName("windows-1251")));
|
headers.setContentType(new MediaType("application", "xml", Charset.forName(encoding)));
|
||||||
|
|
||||||
MonitoringError error = new MonitoringError();
|
MonitoringError error = new MonitoringError();
|
||||||
error.setStatus("error");
|
error.setStatus("error");
|
||||||
|
|
@ -36,7 +42,7 @@ public class GlobalExceptionHandler {
|
||||||
@ExceptionHandler(value = SignalException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
@ExceptionHandler(value = SignalException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
public ResponseEntity<CommonError> handleClientException(SignalException ex) {
|
public ResponseEntity<CommonError> handleClientException(SignalException ex) {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(new MediaType("application", "xml", Charset.forName("windows-1251")));
|
headers.setContentType(new MediaType("application", "xml", Charset.forName(encoding)));
|
||||||
CommonError commonError = getCommonError(ex);
|
CommonError commonError = getCommonError(ex);
|
||||||
commonError.setStatus("error");
|
commonError.setStatus("error");
|
||||||
commonError.setErrorCode(ex.getErrorMessage().getSubject().getCode());
|
commonError.setErrorCode(ex.getErrorMessage().getSubject().getCode());
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,5 @@ public class CreditTrackerSettings {
|
||||||
private Long updateFlagsInterval;
|
private Long updateFlagsInterval;
|
||||||
private Long daysToUpdateFlags;
|
private Long daysToUpdateFlags;
|
||||||
|
|
||||||
|
private String encoding;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package ru.nbch.credit_tracker.config.xml;
|
||||||
import jakarta.xml.bind.JAXBException;
|
import jakarta.xml.bind.JAXBException;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringError;
|
import ru.nbch.credit_tracker.entities.response.errors.MonitoringError;
|
||||||
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
||||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
||||||
|
|
@ -18,8 +19,8 @@ import java.util.List;
|
||||||
public class XmlConfig {
|
public class XmlConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public IXmlProcessor xmlProcessor() throws JAXBException {
|
public IXmlProcessor xmlProcessor(CreditTrackerSettings settings) throws JAXBException {
|
||||||
return new XmlProcessorImplAnyClasses(Charset.forName("windows-1251"),
|
return new XmlProcessorImplAnyClasses(Charset.forName(settings.getEncoding()),
|
||||||
// unmarshalling classes
|
// unmarshalling classes
|
||||||
SgnlOnlineReport.class,
|
SgnlOnlineReport.class,
|
||||||
// marshalling classes
|
// marshalling classes
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import ru.nbch.credit_tracker.entities.response.online_download.Persons;
|
||||||
import ru.nbch.credit_tracker.entities.response.online_report.Report;
|
import ru.nbch.credit_tracker.entities.response.online_report.Report;
|
||||||
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
import ru.nbch.credit_tracker.entities.response.online_report.SgnlOnlineReport;
|
||||||
import ru.nbch.credit_tracker.service.signal.SignalRestService;
|
import ru.nbch.credit_tracker.service.signal.SignalRestService;
|
||||||
import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
|
||||||
import ru.nbch.credit_tracker.service.xml.stax.MonitoringSignalResponseStaxXmlWriter;
|
import ru.nbch.credit_tracker.service.xml.stax.MonitoringSignalResponseStaxXmlWriter;
|
||||||
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
|
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
|
||||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||||
|
|
@ -45,7 +44,6 @@ public class MonitoringService {
|
||||||
|
|
||||||
public MonitoringService(SignalRestService signalRestService,
|
public MonitoringService(SignalRestService signalRestService,
|
||||||
SignalService signalService,
|
SignalService signalService,
|
||||||
IXmlProcessor xmlProcessor,
|
|
||||||
StaxXmlProcessor staxXmlProcessor,
|
StaxXmlProcessor staxXmlProcessor,
|
||||||
CreditTrackerSettings config) {
|
CreditTrackerSettings config) {
|
||||||
this.signalRestService = signalRestService;
|
this.signalRestService = signalRestService;
|
||||||
|
|
@ -130,7 +128,7 @@ public class MonitoringService {
|
||||||
MonitoringSignalResponse response = new MonitoringSignalResponse();
|
MonitoringSignalResponse response = new MonitoringSignalResponse();
|
||||||
response.setPackageName(userPackage.getPackageName()); // Имя пакета, переданного при установке
|
response.setPackageName(userPackage.getPackageName()); // Имя пакета, переданного при установке
|
||||||
|
|
||||||
MonitoringSignalResponseStaxXmlWriter staxXmlWriter = new MonitoringSignalResponseStaxXmlWriter("windows-1251");
|
MonitoringSignalResponseStaxXmlWriter staxXmlWriter = new MonitoringSignalResponseStaxXmlWriter(config.getEncoding());
|
||||||
staxXmlWriter.writeWithStax(responsePath, response,
|
staxXmlWriter.writeWithStax(responsePath, response,
|
||||||
writer -> {
|
writer -> {
|
||||||
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Path.of(reportPath)), 4 * 1024 * 1024)) {
|
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Path.of(reportPath)), 4 * 1024 * 1024)) {
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ public class SignalService {
|
||||||
|
|
||||||
Signals signals = buildSignals(packageId);
|
Signals signals = buildSignals(packageId);
|
||||||
|
|
||||||
SignalsStaxXmlWriter signalsStaxXmlWriter = new SignalsStaxXmlWriter("windows-1251");
|
SignalsStaxXmlWriter signalsStaxXmlWriter = new SignalsStaxXmlWriter(config.getEncoding());
|
||||||
|
|
||||||
signalsStaxXmlWriter.writeWithStax(filePath,
|
signalsStaxXmlWriter.writeWithStax(filePath,
|
||||||
signals,
|
signals,
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import jakarta.xml.bind.DatatypeConverter;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.mapper.scoring.ModelUsersMapper;
|
import ru.nbch.credit_tracker.mapper.scoring.ModelUsersMapper;
|
||||||
|
|
||||||
|
|
@ -13,17 +14,20 @@ import java.util.List;
|
||||||
@Service
|
@Service
|
||||||
public class AuthorizationService {
|
public class AuthorizationService {
|
||||||
private static final String SGNL_CODE = "SGNL";
|
private static final String SGNL_CODE = "SGNL";
|
||||||
private static final String SALT = "-*-XUSER_"; // TODO move salt to props?
|
private static final String SALT = "-*-XUSER_";
|
||||||
|
|
||||||
private final ModelUsersMapper mapper;
|
private final ModelUsersMapper mapper;
|
||||||
|
private final String encoding;
|
||||||
|
|
||||||
public AuthorizationService(ModelUsersMapper mapper) {
|
public AuthorizationService(ModelUsersMapper mapper,
|
||||||
|
CreditTrackerSettings settings) {
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
|
this.encoding = settings.getEncoding();
|
||||||
}
|
}
|
||||||
|
|
||||||
public AuthResult findAuthInfo(String userId, String password) throws Exception {
|
public AuthResult findAuthInfo(String userId, String password) throws Exception {
|
||||||
String hashedPassword = hashPassword(password);
|
String hashedPassword = hashPassword(password);
|
||||||
List<String> productCodes = mapper.findUserProductCodes(userId, hashedPassword); // TODO столбец username имеет ограничение на длину. Добавить обработку или валиться с 500?
|
List<String> productCodes = mapper.findUserProductCodes(userId, hashedPassword);
|
||||||
if (productCodes.isEmpty()) {
|
if (productCodes.isEmpty()) {
|
||||||
return new AuthResult(false, SignalError.ERROR_005);
|
return new AuthResult(false, SignalError.ERROR_005);
|
||||||
}
|
}
|
||||||
|
|
@ -36,7 +40,7 @@ public class AuthorizationService {
|
||||||
private String hashPassword(String password) throws Exception {
|
private String hashPassword(String password) throws Exception {
|
||||||
try {
|
try {
|
||||||
MessageDigest md = MessageDigest.getInstance("MD5");
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||||
byte[] messageDigest = md.digest((SALT + password).getBytes("windows-1251"));
|
byte[] messageDigest = md.digest((SALT + password).getBytes(encoding));
|
||||||
return DatatypeConverter.printHexBinary(messageDigest).toLowerCase();
|
return DatatypeConverter.printHexBinary(messageDigest).toLowerCase();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new Exception("Unable to hash password", e);
|
throw new Exception("Unable to hash password", e);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue