[ADD] CAMBIO DE NOMBRE DE PROYECTO Y CONSOLE API Y DRIVE API (INCOMPLETO)

parent c6b18f4a
......@@ -9,10 +9,10 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>web.multitask</groupId>
<artifactId>app</artifactId>
<artifactId>trismegistoservices</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>app</name>
<name>trismegistoservices</name>
<description>Multi Task Appliocation</description>
<properties>
<java.version>8</java.version>
......@@ -54,7 +54,7 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -149,18 +149,42 @@
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.0</version> <!-- or the latest version available -->
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.apache.poi</groupId>-->
<!-- <artifactId>poi-ooxml</artifactId>-->
<!-- <version>5.2.3</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>5.0.2</version>
</dependency>
<!-- Google API client -->
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>2.0.0</version>
</dependency>
<!-- Google OAuth client (Jetty) -->
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.34.1</version>
</dependency>
<!-- Google Drive API -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev20220815-2.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>app</finalName>
......
package web.multitask.app.api;
import javax.mail.internet.MimeMessage;
import io.github.cdimascio.dotenv.Dotenv;
import org.json.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RestController;
import web.multitask.app.model.EmailRequest;
import web.multitask.app.mysql.EmailMysql;
import web.multitask.app.service.EmailService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping("/email")
public class EmailApi {
private final Dotenv dotenv;
private final EmailService emailService;
private final EmailMysql emailMysql;
public EmailApi(EmailService emailService, EmailMysql emailMysql, Dotenv dotenv) {
this.emailService = emailService;
this.emailMysql = emailMysql;
this.dotenv = dotenv;
}
@RequestMapping(path = "/public/simple_generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<?> simple(@ModelAttribute EmailRequest request) {
try {
MimeMessage message = emailService.simpleMessage(request);
JSONObject response = emailService.send(message);
return ResponseEntity.ok(response.toMap());
} catch (Exception e) {
return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
}
}
@RequestMapping(path = "/private/generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<?> full(@ModelAttribute EmailRequest request) {
try {
MimeMessage message = emailService.htmlMessage(request);
JSONObject response = emailService.send(message);
return ResponseEntity.ok(response.toMap());
} catch (Exception e) {
return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
}
}
@RequestMapping(path = "/service/confirmation", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<?> template(@ModelAttribute EmailRequest request) {
try {
String URL = dotenv.get("URL_CONFIRMATION");
assert URL != null;
JSONObject extra = request.getExtra();
JSONObject response = emailMysql.getHTMLTemplate(extra);
if(response.getBoolean("status")){
JSONObject data = response.getJSONArray("data").getJSONObject(0);
String html = data.getString("html");
html = html.replaceAll("TOKEN", extra.getString("token"));
html = html.replaceAll("URL", URL);
request.setBody(html);
MimeMessage message = emailService.htmlMessage(request);
JSONObject responseEmail = emailService.send(message);
return ResponseEntity.ok(responseEmail.toMap());
}else{
return ResponseEntity.internalServerError().body(new JSONObject().put("message", response.getString("message")).put("status", false).toMap());
}
} catch (Exception e) {
return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
}
}
}
\ No newline at end of file
package web.multitask.app.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("test")
public class TestApi {
@RequestMapping("/user")
public String test() {
return "user";
}
@RequestMapping("/admin")
public String test2() {
return "admin";
}
}
package web.multitask.app.config;
import java.util.Properties;
import javax.mail.Session;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.github.cdimascio.dotenv.Dotenv;
@Configuration
public class EmailConfig {
Dotenv dotenv;
public EmailConfig(Dotenv dotenv) {
this.dotenv = dotenv;
}
@Bean
public Session setSession() {
Properties properties = new Properties();
String enabled = dotenv.get("EMAIL_STARTTLS_ENABLE");
String email = dotenv.get("EMAIL_CORREO");
String password = dotenv.get("EMAIL_PASSWORD");
String port = dotenv.get("EMAIL_PORT");
String host = dotenv.get("EMAIL_HOST");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.starttls.enable", enabled);
properties.put("mail.smtp.port", port);
properties.put("mail.smtp.mail.sender", email);
properties.put("mail.smtp.password", password);
properties.put("mail.smtp.user", email);
properties.put("mail.smtp.auth", enabled);
properties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
properties.put("mail.smtp.socketFactory.port", port);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
return Session.getDefaultInstance(properties);
}
}
package web.multitask.app.service;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Objects;
import java.util.Properties;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import io.github.cdimascio.dotenv.Dotenv;
import web.multitask.app.model.EmailRequest;
import web.multitask.app.utils.CommonUtils;
@Service
public class EmailService {
Dotenv dotenv;
Session session;
CommonUtils commonUtils;
public EmailService(Dotenv dotenv, Session session, CommonUtils commonUtils) {
this.dotenv = dotenv;
this.session = session;
this.commonUtils = commonUtils;
}
public MimeMessage htmlMessage(EmailRequest request) throws UnsupportedEncodingException {
try {
String email = dotenv.get("EMAIL_CORREO");
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
message.setRecipients(MimeMessage.RecipientType.TO,
buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
if (request.getCc() != null) {
message.setRecipients(MimeMessage.RecipientType.CC,
buildRecipients(new JSONObject().put("cc", request.getCc()), "cc"));
}
if (request.getBcc() != null) {
message.setRecipients(MimeMessage.RecipientType.BCC,
buildRecipients(new JSONObject().put("bcc", request.getBcc()), "bcc"));
}
message.setSubject(request.getSubject());
MimeBodyPart texto = new MimeBodyPart();
texto.setContent(request.getBody(), "text/html; charset=utf-8");
MimeMultipart multiParte = new MimeMultipart();
multiParte.addBodyPart(texto);
try {
String file_folder = dotenv.get("FILE_FOLDER");
MultipartFile[] files = request.getFiles();
for (MultipartFile file : files) {
BodyPart adjunto = new MimeBodyPart();
String fileName = file.getOriginalFilename();
convertByteArrayToFile(file.getBytes(), fileName, file_folder);
FileDataSource fds = new FileDataSource(file_folder +"/"+ fileName);
adjunto.setDataHandler(new DataHandler(fds));
adjunto.setFileName(fds.getName());
multiParte.addBodyPart(adjunto);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
message.setContent(multiParte);
return message;
} catch (MessagingException e) {
System.out.println(e.getMessage());
return null;
}
}
public void convertByteArrayToFile (byte[] byteArray, String fileName, String file_folder){
try (FileOutputStream fos = new FileOutputStream(file_folder +"/"+ fileName)) {
fos.write(byteArray);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public MimeMessage simpleMessage(EmailRequest request) throws UnsupportedEncodingException {
try {
MimeMessage message = new MimeMessage(session);
String email = dotenv.get("EMAIL_CORREO");
message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
message.setRecipients(MimeMessage.RecipientType.TO,
buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
message.setSubject(request.getSubject());
message.setText(request.getBody());
return message;
} catch (MessagingException e) {
e.printStackTrace();
return null;
}
}
public JSONObject send(MimeMessage message) {
try {
Transport t = session.getTransport("smtp");
String email = dotenv.get("EMAIL_CORREO");
String password = dotenv.get("EMAIL_PASSWORD");
t.connect(email, password);
t.sendMessage(message, message.getAllRecipients());
t.close();
// CommonUtils.deleteAllFiles();
boolean deletes = commonUtils.deleteAllFiles();
if(!deletes){
System.out.println("Error al eliminar los archivos");
}
return new JSONObject().put("message", "OK").put("status", true);
} catch (Exception e) {
System.out.println(e.getMessage());
return new JSONObject().put("message", e.getMessage()).put("status", false);
}
}
public InternetAddress[] buildRecipients(JSONObject json, String type) {
String[] recipients = json.optString(type).split(",");
InternetAddress[] addresses = new InternetAddress[recipients.length];
Stream.of(recipients).map(recipient -> {
try {
return new InternetAddress(recipient);
} catch (AddressException e) {
System.out.println(e.getMessage());
return null;
}
}).filter(Objects::nonNull).collect(Collectors.toList()).toArray(addresses);
return addresses;
}
}
\ No newline at end of file
package web.multitask.app.service;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.html.simpleparser.HTMLWorker;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.stereotype.Service;
import com.itextpdf.text.Document;
import java.io.StringReader;
@Service
public class PDFService {
public ByteArrayResource htmlToPdf(String html){
try{
byte[] pdfBytes = generatePdf(html);
return new ByteArrayResource(pdfBytes);
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
private byte[] generatePdf(String htmlContent) throws Exception {
Document document = new Document(PageSize.A4);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.parse(new StringReader(htmlContent));
document.close();
writer.close();
return outputStream.toByteArray();
}
}
\ No newline at end of file
package web.multitask.app;
package web.multitask.trismegistoservices;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
......@@ -10,4 +10,4 @@ public class AppApplication {
SpringApplication.run(AppApplication.class, args);
}
}
}
\ No newline at end of file
package web.multitask.app;
package web.multitask.trismegistoservices;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
......@@ -10,4 +10,4 @@ public class ServletInitializer extends SpringBootServletInitializer {
return application.sources(AppApplication.class);
}
}
}
\ No newline at end of file
package web.multitask.app.api;
package web.multitask.trismegistoservices.api;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import web.multitask.app.mysql.ProcedureMysql;
import web.multitask.app.repository.UserRespository;
import web.multitask.trismegistoservices.mysql.ProcedureMysql;
import web.multitask.trismegistoservices.repository.UserRespository;
@RestController
@CrossOrigin("*")
......
package web.multitask.trismegistoservices.api;
import org.json.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping("console")
public class ConsoleApi {
@PostMapping("/public/command")
public ResponseEntity<?> pull(@RequestBody String jsonBody) {
JSONObject json = new JSONObject(jsonBody);
String command = json.optString("command","");
if(json.optBoolean("sudo",false)){
command = "echo '"+json.optString("password","")+"' | sudo -S "+command;
}
try {
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", command)
.directory(new File(json.optString("path", "")))
.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
int exitCode = process.waitFor();
return ResponseEntity.ok(
"Exit Code: " + exitCode + "\n" +
output.toString());
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}
}
}
\ No newline at end of file
package web.multitask.trismegistoservices.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import web.multitask.trismegistoservices.model.DriveRequest;
import web.multitask.trismegistoservices.service.DriveService;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping("drive")
public class DriveApi {
@Autowired
private DriveService driveService;
@PostMapping(path = "/public/upload", consumes = {
MediaType.MULTIPART_FORM_DATA_VALUE })
public ResponseEntity<?> uploadFile(@ModelAttribute DriveRequest request) {
String folder_id = request.getFolder_id();
String file_name = request.getFile_name();
String base64_name = request.getBase64_name();
String base64_file = request.getBase64_file();
System.out.println(request.getFile().getOriginalFilename());
return null;
}
}
\ No newline at end of file
// package web.multitask.app.api;
// import javax.mail.internet.MimeMessage;
// import io.github.cdimascio.dotenv.Dotenv;
// import org.json.JSONObject;
// import org.springframework.http.MediaType;
// import org.springframework.http.ResponseEntity;
// import org.springframework.web.bind.annotation.ModelAttribute;
// import org.springframework.web.bind.annotation.RestController;
// import web.multitask.app.model.EmailRequest;
// import web.multitask.app.mysql.EmailMysql;
// import web.multitask.app.service.EmailService;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestMethod;
// @RestController
// @RequestMapping("/email")
// public class EmailApi {
// private final Dotenv dotenv;
// private final EmailService emailService;
// private final EmailMysql emailMysql;
// public EmailApi(EmailService emailService, EmailMysql emailMysql, Dotenv dotenv) {
// this.emailService = emailService;
// this.emailMysql = emailMysql;
// this.dotenv = dotenv;
// }
// @RequestMapping(path = "/public/simple_generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> simple(@ModelAttribute EmailRequest request) {
// try {
// MimeMessage message = emailService.simpleMessage(request);
// JSONObject response = emailService.send(message);
// return ResponseEntity.ok(response.toMap());
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// @RequestMapping(path = "/private/generate", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> full(@ModelAttribute EmailRequest request) {
// try {
// MimeMessage message = emailService.htmlMessage(request);
// JSONObject response = emailService.send(message);
// return ResponseEntity.ok(response.toMap());
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// @RequestMapping(path = "/service/confirmation", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
// public ResponseEntity<?> template(@ModelAttribute EmailRequest request) {
// try {
// String URL = dotenv.get("URL_CONFIRMATION");
// assert URL != null;
// JSONObject extra = request.getExtra();
// JSONObject response = emailMysql.getHTMLTemplate(extra);
// if(response.getBoolean("status")){
// JSONObject data = response.getJSONArray("data").getJSONObject(0);
// String html = data.getString("html");
// html = html.replaceAll("TOKEN", extra.getString("token"));
// html = html.replaceAll("URL", URL);
// request.setBody(html);
// MimeMessage message = emailService.htmlMessage(request);
// JSONObject responseEmail = emailService.send(message);
// return ResponseEntity.ok(responseEmail.toMap());
// }else{
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", response.getString("message")).put("status", false).toMap());
// }
// } catch (Exception e) {
// return ResponseEntity.internalServerError().body(new JSONObject().put("message", e.getMessage()).put("status", false).toMap());
// }
// }
// }
\ No newline at end of file
package web.multitask.app.api;
package web.multitask.trismegistoservices.api;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
......
package web.multitask.app.api;
package web.multitask.trismegistoservices.api;
import org.json.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*;
import web.multitask.app.model.User;
import web.multitask.app.repository.UserRespository;
import web.multitask.app.utils.JWTokenUtil;
import web.multitask.trismegistoservices.model.User;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
import java.math.BigInteger;
import java.util.Objects;
import org.springframework.web.bind.annotation.PostMapping;
......
package web.multitask.app.api;
package web.multitask.trismegistoservices.api;
import org.json.JSONObject;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import web.multitask.app.service.PDFService;
import web.multitask.trismegistoservices.service.PDFService;
@RestController
@CrossOrigin(origins = "*")
......@@ -20,19 +20,24 @@ public class PDFApi {
}
@PostMapping("/public/html")
public ResponseEntity<Resource> htmlToPdf(@RequestBody String json) {
public ResponseEntity<?> htmlToPdf(@RequestBody String json) {
try {
JSONObject bodyJson = new JSONObject(json);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + bodyJson.getString("name"));
ByteArrayResource resource = pdfService.htmlToPdf(bodyJson.getString("html"));
return ResponseEntity.ok().headers(headers)
.contentLength(resource.contentLength())
.contentType(org.springframework.http.MediaType.APPLICATION_PDF)
.body(resource);
MediaType mediaType = org.springframework.http.MediaType.APPLICATION_PDF;
if (mediaType != null) {
return ResponseEntity.ok().headers(headers)
.contentLength(resource.contentLength())
.contentType(mediaType)
.body(resource);
} else {
return ResponseEntity.badRequest().body("Error");
}
}catch (Exception e){
System.out.println(e);
return ResponseEntity.badRequest().body(null);
return ResponseEntity.internalServerError().body(e.getMessage());
}
}
......
package web.multitask.app.api;
package web.multitask.trismegistoservices.api;
import org.json.JSONArray;
import org.json.JSONObject;
......@@ -9,8 +9,8 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import web.multitask.app.model.FileRequest;
import web.multitask.app.utils.CommonUtils;
import web.multitask.trismegistoservices.model.FileRequest;
import web.multitask.trismegistoservices.utils.CommonUtils;
import java.io.File;
import java.util.Arrays;
......@@ -52,10 +52,15 @@ public class UtilsApi {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + bodyJson.getString("name"));
File outputFile = commonUtils.convertToFile(bodyJson.getString("base64"),bodyJson.getString("name"));
Resource resource = new FileSystemResource(outputFile);
return ResponseEntity.ok()
.headers(headers)
.body(resource);
if (outputFile != null) {
Resource resource = new FileSystemResource(outputFile);
return ResponseEntity.ok()
.headers(headers)
.body(resource);
} else {
return ResponseEntity.badRequest().body(null);
}
}catch (Exception e){
System.out.println(e);
return ResponseEntity.badRequest().body(null);
......
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.github.cdimascio.dotenv.Dotenv;
import web.multitask.app.utils.DotEnvUtil;
import web.multitask.trismegistoservices.utils.DotEnvUtil;
@Configuration
public class DotEnvConfig {
......@@ -14,4 +14,4 @@ public class DotEnvConfig {
return Dotenv.configure().directory(DotEnvUtil.getDotEnvPath("fullservice")).load();
}
}
}
\ No newline at end of file
// package web.multitask.app.config;
// import java.util.Properties;
// import javax.mail.Session;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import io.github.cdimascio.dotenv.Dotenv;
// @Configuration
// public class EmailConfig {
// Dotenv dotenv;
// public EmailConfig(Dotenv dotenv) {
// this.dotenv = dotenv;
// }
// @Bean
// public Session setSession() {
// Properties properties = new Properties();
// String enabled = dotenv.get("EMAIL_STARTTLS_ENABLE");
// String email = dotenv.get("EMAIL_CORREO");
// String password = dotenv.get("EMAIL_PASSWORD");
// String port = dotenv.get("EMAIL_PORT");
// String host = dotenv.get("EMAIL_HOST");
// properties.put("mail.smtp.host", host);
// properties.put("mail.smtp.starttls.enable", enabled);
// properties.put("mail.smtp.port", port);
// properties.put("mail.smtp.mail.sender", email);
// properties.put("mail.smtp.password", password);
// properties.put("mail.smtp.user", email);
// properties.put("mail.smtp.auth", enabled);
// properties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
// properties.put("mail.smtp.socketFactory.port", port);
// properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
// return Session.getDefaultInstance(properties);
// }
// }
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import web.multitask.app.filter.JWTokenFilter;
import web.multitask.trismegistoservices.filter.JWTokenFilter;
@Configuration
public class FilterConfig {
......
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.NonNull;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
......@@ -12,7 +9,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class MVCConfig
implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
public void addCorsMappings(@NonNull CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
}
......
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......@@ -17,9 +17,9 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import web.multitask.app.filter.JWTokenFilter;
import web.multitask.app.repository.UserRespository;
import web.multitask.app.utils.JWTokenUtil;
import web.multitask.trismegistoservices.filter.JWTokenFilter;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
@Configuration
@EnableWebSecurity
......
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry;
......
package web.multitask.app.config;
package web.multitask.trismegistoservices.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import web.multitask.app.filter.AuthChannelInterceptorAdapter;
import web.multitask.trismegistoservices.filter.AuthChannelInterceptorAdapter;
@Configuration
@EnableWebSocketMessageBroker
......
package web.multitask.app.controller;
package web.multitask.trismegistoservices.controller;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import web.multitask.app.model.Message;
import web.multitask.app.model.Response;
import web.multitask.trismegistoservices.model.Message;
import web.multitask.trismegistoservices.model.Response;
import java.util.Date;
......
package web.multitask.app.filter;
package web.multitask.trismegistoservices.filter;
import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;
......@@ -12,8 +12,8 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import web.multitask.app.repository.UserRespository;
import web.multitask.app.utils.JWTokenUtil;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
import java.util.Objects;
......
package web.multitask.app.filter;
package web.multitask.trismegistoservices.filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
......@@ -17,10 +17,8 @@ import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import io.jsonwebtoken.io.IOException;
import web.multitask.app.repository.UserRespository;
import web.multitask.app.utils.JWTokenUtil;
import java.util.Enumeration;
import web.multitask.trismegistoservices.repository.UserRespository;
import web.multitask.trismegistoservices.utils.JWTokenUtil;
@Component
@Order(1)
......
package web.multitask.trismegistoservices.model;
import org.springframework.web.multipart.MultipartFile;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class DriveRequest {
private String folder_id;
private String file_name;
private MultipartFile file;
private String base64_name;
private String base64_file;
}
\ No newline at end of file
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;
......
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
......
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import lombok.Data;
import lombok.Getter;
......
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import javax.persistence.*;
import lombok.Data;
......
package web.multitask.app.model;
package web.multitask.trismegistoservices.model;
import javax.persistence.*;
import lombok.*;
......
package web.multitask.app.mysql;
package web.multitask.trismegistoservices.mysql;
import org.json.JSONObject;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import web.multitask.app.utils.JWTokenUtil;
import java.util.List;
import java.util.Map;
......
package web.multitask.app.mysql;
package web.multitask.trismegistoservices.mysql;
import org.json.JSONObject;
......
package web.multitask.app.repository;
package web.multitask.trismegistoservices.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import web.multitask.app.model.User;
import web.multitask.trismegistoservices.model.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRespository extends JpaRepository<User, Long> {
UserDetails findByUsername(String username)
......
package web.multitask.trismegistoservices.service;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.Collections;
import java.util.List;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.InputStreamContent;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
@Component
public class DriveService {
private static final String APPLICATION_NAME = "FullService Application";
private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final List<String> SCOPES = Collections.singletonList(DriveScopes.DRIVE_FILE);
private static final String CREDENTIALS_FILE_PATH = "./credentials.json";
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
throws IOException {
InputStream in = DriveService.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
if (in == null) {
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
}
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
return credential;
}
public Drive getInstance() throws GeneralSecurityException, IOException {
// Build a new authorized API client service.
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
return service;
}
public String uploadFile(String folder_id, String file_name, MultipartFile file, JSONObject base64) {
try {
System.out.println(file.getOriginalFilename());
String folderId = folder_id;
if (null != file) {
File fileMetadata = new File();
fileMetadata.setParents(Collections.singletonList(folderId));
fileMetadata.setName(file.getOriginalFilename());
File uploadFile = getInstance()
.files()
.create(fileMetadata, new InputStreamContent(
file.getContentType(),
new ByteArrayInputStream(file.getBytes()))
)
.setFields("id").execute();
System.out.println(uploadFile);
return uploadFile.getId();
}
} catch (Exception e) {
System.out.printf("Error: "+ e);
}
return null;
}
}
\ No newline at end of file
// package web.multitask.app.service;
// import java.io.ByteArrayInputStream;
// import java.io.File;
// import java.io.FileInputStream;
// import java.io.FileNotFoundException;
// import java.io.FileOutputStream;
// import java.io.IOException;
// import java.io.InputStream;
// import java.io.UnsupportedEncodingException;
// import java.util.Objects;
// import java.util.Properties;
// import java.util.stream.Collectors;
// import java.util.stream.Stream;
// import javax.activation.DataHandler;
// import javax.activation.FileDataSource;
// import javax.mail.BodyPart;
// import javax.mail.MessagingException;
// import javax.mail.Multipart;
// import javax.mail.Session;
// import javax.mail.Transport;
// import javax.mail.internet.AddressException;
// import javax.mail.internet.InternetAddress;
// import javax.mail.internet.MimeBodyPart;
// import javax.mail.internet.MimeMessage;
// import javax.mail.internet.MimeMultipart;
// import org.json.JSONObject;
// import org.springframework.stereotype.Service;
// import org.springframework.web.multipart.MultipartFile;
// import io.github.cdimascio.dotenv.Dotenv;
// import web.multitask.app.model.EmailRequest;
// import web.multitask.app.utils.CommonUtils;
// @Service
// public class EmailService {
// Dotenv dotenv;
// Session session;
// CommonUtils commonUtils;
// public EmailService(Dotenv dotenv, Session session, CommonUtils commonUtils) {
// this.dotenv = dotenv;
// this.session = session;
// this.commonUtils = commonUtils;
// }
// public MimeMessage htmlMessage(EmailRequest request) throws UnsupportedEncodingException {
// try {
// String email = dotenv.get("EMAIL_CORREO");
// MimeMessage message = new MimeMessage(session);
// message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setRecipients(MimeMessage.RecipientType.TO,
// buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
// if (request.getCc() != null) {
// message.setRecipients(MimeMessage.RecipientType.CC,
// buildRecipients(new JSONObject().put("cc", request.getCc()), "cc"));
// }
// if (request.getBcc() != null) {
// message.setRecipients(MimeMessage.RecipientType.BCC,
// buildRecipients(new JSONObject().put("bcc", request.getBcc()), "bcc"));
// }
// message.setSubject(request.getSubject());
// MimeBodyPart texto = new MimeBodyPart();
// texto.setContent(request.getBody(), "text/html; charset=utf-8");
// MimeMultipart multiParte = new MimeMultipart();
// multiParte.addBodyPart(texto);
// try {
// String file_folder = dotenv.get("FILE_FOLDER");
// MultipartFile[] files = request.getFiles();
// for (MultipartFile file : files) {
// BodyPart adjunto = new MimeBodyPart();
// String fileName = file.getOriginalFilename();
// convertByteArrayToFile(file.getBytes(), fileName, file_folder);
// FileDataSource fds = new FileDataSource(file_folder +"/"+ fileName);
// adjunto.setDataHandler(new DataHandler(fds));
// adjunto.setFileName(fds.getName());
// multiParte.addBodyPart(adjunto);
// }
// } catch (Exception e) {
// System.out.println(e.getMessage());
// }
// message.setContent(multiParte);
// return message;
// } catch (MessagingException e) {
// System.out.println(e.getMessage());
// return null;
// }
// }
// public void convertByteArrayToFile (byte[] byteArray, String fileName, String file_folder){
// try (FileOutputStream fos = new FileOutputStream(file_folder +"/"+ fileName)) {
// fos.write(byteArray);
// }catch(Exception e){
// System.out.println(e.getMessage());
// }
// }
// public MimeMessage simpleMessage(EmailRequest request) throws UnsupportedEncodingException {
// try {
// MimeMessage message = new MimeMessage(session);
// String email = dotenv.get("EMAIL_CORREO");
// message.setFrom(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setSender(new InternetAddress(email, "FULLSERVICE APPLICATION"));
// message.setRecipients(MimeMessage.RecipientType.TO,
// buildRecipients(new JSONObject().put("to", request.getTo()), "to"));
// message.setSubject(request.getSubject());
// message.setText(request.getBody());
// return message;
// } catch (MessagingException e) {
// e.printStackTrace();
// return null;
// }
// }
// public JSONObject send(MimeMessage message) {
// try {
// Transport t = session.getTransport("smtp");
// String email = dotenv.get("EMAIL_CORREO");
// String password = dotenv.get("EMAIL_PASSWORD");
// t.connect(email, password);
// t.sendMessage(message, message.getAllRecipients());
// t.close();
// // CommonUtils.deleteAllFiles();
// boolean deletes = commonUtils.deleteAllFiles();
// if(!deletes){
// System.out.println("Error al eliminar los archivos");
// }
// return new JSONObject().put("message", "OK").put("status", true);
// } catch (Exception e) {
// System.out.println(e.getMessage());
// return new JSONObject().put("message", e.getMessage()).put("status", false);
// }
// }
// public InternetAddress[] buildRecipients(JSONObject json, String type) {
// String[] recipients = json.optString(type).split(",");
// InternetAddress[] addresses = new InternetAddress[recipients.length];
// Stream.of(recipients).map(recipient -> {
// try {
// return new InternetAddress(recipient);
// } catch (AddressException e) {
// System.out.println(e.getMessage());
// return null;
// }
// }).filter(Objects::nonNull).collect(Collectors.toList()).toArray(addresses);
// return addresses;
// }
// }
\ No newline at end of file
package web.multitask.app.service;
//
//import lombok.var;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.apache.poi.xssf.usermodel.XSSFRow;
//import org.apache.poi.xssf.usermodel.XSSFSheet;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.json.JSONArray;
//import org.json.JSONObject;
//import org.springframework.stereotype.Service;
//
//import java.time.LocalDateTime;
//import java.util.Arrays;
//import java.util.stream.IntStream;
package web.multitask.trismegistoservices.service;
import org.springframework.stereotype.Service;
//@Service
@Service
public class ExcelService {
// public byte[] generateExcel (JSONObject json){
// XSSFWorkbook workbook = new XSSFWorkbook();
//
// }
//
// private void createSheet(XSSFWorkbook workbook, JSONObject json){
......@@ -50,7 +40,27 @@ public class ExcelService {
// row_responsible.createCell(0).setCellValue(responsible);
// CellRangeAddress cellRangeAddress2 = new CellRangeAddress(row_index, row_index, 0, headers.length() - 1);
// sheet.addMergedRegion(cellRangeAddress2);
// row_index++;geAddress2);
// row_index++;
// XSSFRow row_date = sheet.createRow(row_index);
// row_date.createCell(0).setCellValue("Fecha: " + currentDate);
// CellRangeAddress cellRangeAddress3 = new CellRangeAddress(row_index, row_index, 0, headers.length() - 1);
// sheet.addMergedRegion(cellRangeAddress3);
// row_index++;
// XSSFRow row_header = sheet.createRow(row_index);
// IntStream.range(0, headers.length()).forEach(i -> {
// row_header.createCell(0).setCellValue(headers.optString(i, "").toUpperCase());
// });
//
// for(int i = 0; i < data.length(); i++){
// row_index++;
// XSSFRow row_data = sheet.createRow(row_index);
// int finalI = i;
// IntStream.range(0, identifiers.length()).forEach(j -> {
// row_data.createCell(j).setCellValue(data.optJSONObject(finalI).optString(identifiers.optString(j, ""), ""));
// });
// }
// }
// XSSFRow row_date = sheet.createRow(row_index);
// row_date.createCell(0).setCellValue("Fecha: " + currentDate);
// CellRangeAddress cellRangeAddress3 = new CellRangeAddress(row_index, row_index, 0, headers.length() - 1);
......
package web.multitask.trismegistoservices.service;
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import org.json.JSONArray;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
@Service
public class PDFService {
public ByteArrayResource htmlToPdf(String html){
try{
byte[] pdfBytes = generatePdf(html);
return new ByteArrayResource(pdfBytes);
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
private byte[] generatePdf(String htmlContent) throws Exception {
ConverterProperties properties = new ConverterProperties();
DefaultFontProvider fontProvider = new DefaultFontProvider(false, false, false);
fontProvider.addFont("/fonts/Roboto-Regular.ttf");
properties.setFontProvider(fontProvider);
FileOutputStream outputStream = new FileOutputStream("/var/www/html/pdf.pdf");
HtmlConverter.convertToPdf(htmlContent, outputStream, properties);
File file = new File("/var/www/html/pdf.pdf");
return org.apache.commons.io.FileUtils.readFileToByteArray(file);
}
private JSONArray pdfToBase64(String pdf){
try{
byte[] pdfBytes = generatePdf(pdf);
return new JSONArray(pdfBytes);
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
}
\ No newline at end of file
package web.multitask.app.utils;
package web.multitask.trismegistoservices.utils;
import io.github.cdimascio.dotenv.Dotenv;
import org.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class CommonUtils {
......
package web.multitask.app.utils;
package web.multitask.trismegistoservices.utils;
import java.io.File;
import java.util.HashMap;
......@@ -52,4 +52,4 @@ public class DotEnvUtil {
.orElse("");
}
}
}
\ No newline at end of file
package web.multitask.app.utils;
package web.multitask.trismegistoservices.utils;
import java.io.Serializable;
import java.math.BigInteger;
......@@ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Value;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import org.springframework.stereotype.Component;
import web.multitask.app.model.User;
import web.multitask.trismegistoservices.model.User;
@Component
public class JWTokenUtil implements Serializable{
......
spring.datasource.url=jdbc:mysql://localhost:3306/security
spring.datasource.username=root
spring.datasource.password=Saco1357$
spring.datasource.url=jdbc:mysql://172.16.1.32:3306/seguridad
spring.datasource.username=desarrollo
spring.datasource.password=5vC0$2019$
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
server.port=8081
server.address=0.0.0.0
......
......@@ -5,9 +5,9 @@
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello</title>
<title>TRISMEGISTO-SERVICIOS</title>
</head>
<body>
<h1>Hello World</h1>
<h1>TRISMEGISTO-SERVICIOS</h1>
</body>
</html>
\ No newline at end of file
package web.multitask.app;
package web.multitask.trismegistoservices;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -10,4 +10,4 @@ class AppApplicationTests {
void contextLoads() {
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment