ing
This commit is contained in:
parent
ac4f934e8a
commit
d870cc2a89
2
pom.xml
2
pom.xml
|
@ -50,7 +50,7 @@
|
|||
<dependency>
|
||||
<groupId>com.loafle.overflow</groupId>
|
||||
<artifactId>commons-java</artifactId>
|
||||
<version>1.0.18-SNAPSHOT</version>
|
||||
<version>1.0.19-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
|
|
@ -13,7 +13,7 @@ import com.loafle.overflow.model.domain.Domain;
|
|||
import com.loafle.overflow.model.domain.DomainMember;
|
||||
import com.loafle.overflow.model.email.EmailAuth;
|
||||
import com.loafle.overflow.model.member.Member;
|
||||
import com.loafle.overflow.model.meta.MetaEmailStatus;
|
||||
import com.loafle.overflow.model.meta.MetaEmailType;
|
||||
import com.loafle.overflow.model.meta.MetaMemberStatus;
|
||||
import com.loafle.overflow.service.central.email.EmailAuthService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -161,7 +161,7 @@ public class CentralEmailAuthService implements EmailAuthService {
|
|||
return true;
|
||||
}
|
||||
|
||||
private EmailAuth sendEMail(Member member, int status) throws OverflowException {
|
||||
private EmailAuth sendEMail(Member member, int type) throws OverflowException {
|
||||
String key = GenerateKey.getKey();
|
||||
// String enMail = emailSender.encrypt(key);
|
||||
|
||||
|
@ -172,7 +172,7 @@ public class CentralEmailAuthService implements EmailAuthService {
|
|||
EmailAuth auth = new EmailAuth();
|
||||
auth.setMember(member);
|
||||
auth.setEmailAuthKey(key);
|
||||
auth.setMetaEmailStatus(new MetaEmailStatus(status));
|
||||
auth.setMetaEmailType(new MetaEmailType(type));
|
||||
|
||||
// System.out.println("encode = [" + encode + "]");
|
||||
String encode = "";
|
||||
|
@ -183,11 +183,11 @@ public class CentralEmailAuthService implements EmailAuthService {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (status == 1) {
|
||||
if (type == 1) {
|
||||
mailSubject = "Signup Confirm Mail";
|
||||
entry = "confirm-signup";
|
||||
templateName = "/vmtemplates/signup.vm";
|
||||
} else if (status == 2) {
|
||||
} else if (type == 2) {
|
||||
mailSubject = "Reset Password Confirm Mail";
|
||||
entry = "confirm-reset-password";
|
||||
templateName = "/vmtemplates/password_reset.vm";
|
||||
|
@ -219,7 +219,7 @@ public class CentralEmailAuthService implements EmailAuthService {
|
|||
// auth.setMember(member);
|
||||
// String en = emailSender.encrypt(member.getEmail());
|
||||
// auth.setEmailAuthKey(en);
|
||||
// auth.setEmailStatus(new MetaEmailStatus(1));
|
||||
// auth.setEmailStatus(new MetaEmailType(1));
|
||||
// String encode = URLEncoder.encode(en, "UTF-8");
|
||||
//
|
||||
//// System.out.println("encode = [" + encode + "]");
|
||||
|
|
|
@ -3,7 +3,6 @@ package com.loafle.overflow.central.module.generator.service;
|
|||
import com.loafle.overflow.core.exception.OverflowException;
|
||||
import com.loafle.overflow.model.meta.MetaCrawler;
|
||||
import com.loafle.overflow.model.meta.MetaSensorItemKey;
|
||||
import com.loafle.overflow.model.meta.type.MetaCrawlerEnum;
|
||||
import com.loafle.overflow.model.sensor.SensorItem;
|
||||
import com.loafle.overflow.model.sensorconfig.Crawler;
|
||||
import com.loafle.overflow.model.sensorconfig.Keys;
|
||||
|
@ -53,17 +52,17 @@ public class GenerateUtil {
|
|||
|
||||
String container = "";
|
||||
|
||||
if (metaCrawler.getId() == MetaCrawlerEnum.CASSANDRA_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.CASSANDRA_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.MONGODB_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.MSSQL_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.ORACLE_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.POSTGRESQL_CRAWLER.getValue()
|
||||
|| metaCrawler.getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
container = "java_proxy";
|
||||
} else {
|
||||
container = "network_proxy";
|
||||
}
|
||||
// if (metaCrawler.getId() == MetaCrawlerEnum.CASSANDRA_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.CASSANDRA_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.MONGODB_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.MSSQL_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.ORACLE_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.POSTGRESQL_CRAWLER.getValue()
|
||||
// || metaCrawler.getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
// container = "java_proxy";
|
||||
// } else {
|
||||
// container = "network_proxy";
|
||||
// }
|
||||
|
||||
crawler.setContainer(container);
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.loafle.overflow.model.auth.AuthCrawler;
|
|||
import com.loafle.overflow.model.infra.Infra;
|
||||
import com.loafle.overflow.model.infra.InfraHost;
|
||||
import com.loafle.overflow.model.meta.MetaSensorItemKey;
|
||||
import com.loafle.overflow.model.meta.type.MetaCrawlerEnum;
|
||||
import com.loafle.overflow.model.sensor.Sensor;
|
||||
import com.loafle.overflow.model.sensor.SensorItem;
|
||||
import com.loafle.overflow.model.sensorconfig.Connection;
|
||||
|
@ -67,9 +66,9 @@ public class InfraHostGenerator {
|
|||
|
||||
Map<Integer, MetaSensorItemKey> keyMap = this.generateUtil.initMappingMap(dbSensor.getMetaCrawler());
|
||||
|
||||
if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.WMI_CRAWLER.getValue()) {
|
||||
this.infraHostWMIGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
}
|
||||
// if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.WMI_CRAWLER.getValue()) {
|
||||
// this.infraHostWMIGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
// }
|
||||
|
||||
return objectMapper.writeValueAsString(sensorConfig);
|
||||
}
|
||||
|
@ -85,26 +84,26 @@ public class InfraHostGenerator {
|
|||
|
||||
Target target = new Target();
|
||||
Connection connection = new Connection();
|
||||
connection.setIp(infraHost.getIpv4());
|
||||
// connection.setIp(infraHost.getIpv4());
|
||||
|
||||
HashMap<String, String> optionMap = this.objectMapper.readValue(authCrawler.getAuthJson(),
|
||||
new TypeReference<Map<String, String>>() {
|
||||
});
|
||||
|
||||
if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.WMI_CRAWLER.getValue()) {
|
||||
connection.setPort(135);
|
||||
connection.setPortType(PortType.TCP);
|
||||
connection.setSsl(false);
|
||||
// if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.WMI_CRAWLER.getValue()) {
|
||||
// connection.setPort(135);
|
||||
// connection.setPortType(PortType.TCP);
|
||||
// connection.setSsl(false);
|
||||
|
||||
target.setConnection(connection);
|
||||
// target.setConnection(connection);
|
||||
|
||||
Map<String, Object> auth = new HashMap<>();
|
||||
auth.put("id", optionMap.get("ID"));
|
||||
auth.put("pw", optionMap.get("PassWord"));
|
||||
// Map<String, Object> auth = new HashMap<>();
|
||||
// auth.put("id", optionMap.get("ID"));
|
||||
// auth.put("pw", optionMap.get("PassWord"));
|
||||
|
||||
target.setAuth(auth);
|
||||
// target.setAuth(auth);
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
return target;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.loafle.overflow.model.auth.AuthCrawler;
|
|||
import com.loafle.overflow.model.infra.Infra;
|
||||
import com.loafle.overflow.model.infra.InfraService;
|
||||
import com.loafle.overflow.model.meta.MetaSensorItemKey;
|
||||
import com.loafle.overflow.model.meta.type.MetaCrawlerEnum;
|
||||
import com.loafle.overflow.model.sensor.Sensor;
|
||||
import com.loafle.overflow.model.sensor.SensorItem;
|
||||
import com.loafle.overflow.model.sensorconfig.Connection;
|
||||
|
@ -69,11 +68,11 @@ public class InfraServiceGenerator {
|
|||
|
||||
Map<Integer, MetaSensorItemKey> keyMap = this.generateUtil.initMappingMap(dbSensor.getMetaCrawler());
|
||||
|
||||
if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.MYSQL_CRAWLER.getValue()) {
|
||||
this.infraServiceMysqlGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
} else if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
this.infraServiceJMXGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
}
|
||||
// if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.MYSQL_CRAWLER.getValue()) {
|
||||
// this.infraServiceMysqlGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
// } else if (dbSensor.getMetaCrawler().getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
// this.infraServiceJMXGenerator.process(sensorItems, keyMap, dbSensor, sensorConfig);
|
||||
// }
|
||||
|
||||
return objectMapper.writeValueAsString(sensorConfig);
|
||||
}
|
||||
|
@ -89,10 +88,10 @@ public class InfraServiceGenerator {
|
|||
|
||||
Target target = new Target();
|
||||
Connection connection = new Connection();
|
||||
connection.setIp(infraService.getInfraHost().getIpv4());
|
||||
connection.setPort(infraService.getPort());
|
||||
connection.setPortType(PortType.valueOf(infraService.getPortType()));
|
||||
connection.setSsl(infraService.isTlsType());
|
||||
// connection.setIp(infraService.getInfraHost().getIpv4());
|
||||
// connection.setPort(infraService.getPort());
|
||||
// connection.setPortType(PortType.valueOf(infraService.getPortType()));
|
||||
// connection.setSsl(infraService.isTlsType());
|
||||
|
||||
target.setConnection(connection);
|
||||
|
||||
|
@ -102,15 +101,15 @@ public class InfraServiceGenerator {
|
|||
|
||||
Map<String, Object> auth = new HashMap<>();
|
||||
|
||||
if (sensor.getMetaCrawler().getId() == MetaCrawlerEnum.MYSQL_CRAWLER.getValue()) {
|
||||
auth.put("url", "jdbc:mysql://" + infraService.getInfraHost().getIpv4() + ":" + infraService.getPort());
|
||||
auth.put("id", optionMap.get("ID")); // FIXME: Auth Info
|
||||
auth.put("pw", optionMap.get("PassWord")); // FIXME: Auth Info
|
||||
} else if (sensor.getMetaCrawler().getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
auth.put("id", optionMap.get("ID")); // FIXME: Auth Info
|
||||
auth.put("pw", optionMap.get("PassWord")); // FIXME: Auth Info
|
||||
connection.setPort(9840);
|
||||
}
|
||||
// if (sensor.getMetaCrawler().getId() == MetaCrawlerEnum.MYSQL_CRAWLER.getValue()) {
|
||||
// auth.put("url", "jdbc:mysql://" + infraService.getInfraHost().getIpv4() + ":" + infraService.getPort());
|
||||
// auth.put("id", optionMap.get("ID")); // FIXME: Auth Info
|
||||
// auth.put("pw", optionMap.get("PassWord")); // FIXME: Auth Info
|
||||
// } else if (sensor.getMetaCrawler().getId() == MetaCrawlerEnum.JMX_CRAWLER.getValue()) {
|
||||
// auth.put("id", optionMap.get("ID")); // FIXME: Auth Info
|
||||
// auth.put("pw", optionMap.get("PassWord")); // FIXME: Auth Info
|
||||
// connection.setPort(9840);
|
||||
// }
|
||||
|
||||
target.setAuth(auth);
|
||||
|
||||
|
|
|
@ -11,11 +11,8 @@ import com.loafle.overflow.model.apikey.ApiKey;
|
|||
import com.loafle.overflow.model.domain.Domain;
|
||||
import com.loafle.overflow.model.domain.DomainMember;
|
||||
import com.loafle.overflow.model.infra.InfraHost;
|
||||
import com.loafle.overflow.model.infra.InfraMachine;
|
||||
import com.loafle.overflow.model.infra.InfraOS;
|
||||
import com.loafle.overflow.model.member.Member;
|
||||
import com.loafle.overflow.model.meta.MetaInfraType;
|
||||
import com.loafle.overflow.model.meta.MetaInfraVendor;
|
||||
import com.loafle.overflow.model.meta.MetaNoAuthProbeStatus;
|
||||
import com.loafle.overflow.model.meta.MetaProbeStatus;
|
||||
import com.loafle.overflow.model.noauthprobe.NoAuthProbe;
|
||||
|
@ -27,8 +24,6 @@ import com.loafle.overflow.model.probe.ProbeHost;
|
|||
import com.loafle.overflow.service.central.apikey.ApiKeyService;
|
||||
import com.loafle.overflow.service.central.domain.DomainMemberService;
|
||||
import com.loafle.overflow.service.central.infra.InfraHostService;
|
||||
import com.loafle.overflow.service.central.infra.InfraMachineService;
|
||||
import com.loafle.overflow.service.central.infra.InfraOSService;
|
||||
import com.loafle.overflow.service.central.noauthprobe.NoAuthProbeService;
|
||||
import com.loafle.overflow.service.central.probe.ProbeHostService;
|
||||
import com.loafle.overflow.service.central.probe.ProbeService;
|
||||
|
|
3
src/main/resources/development/cache.properties
Normal file
3
src/main/resources/development/cache.properties
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Caffeine
|
||||
cache.cache-names:memberListByDomain,memberListByProbeKey
|
||||
cache.caffeine.spec: initialCapacity=100,maximumSize=500,expireAfterAccess=5m,recordStats
|
11
src/main/resources/development/database.properties
Normal file
11
src/main/resources/development/database.properties
Normal file
|
@ -0,0 +1,11 @@
|
|||
datasource.url=jdbc:postgresql://192.168.1.50:5432/overflow
|
||||
datasource.username=overflow
|
||||
datasource.password=qwer5795
|
||||
datasource.driver-class-name=org.postgresql.Driver
|
||||
|
||||
jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
|
||||
jpa.database=postgresql
|
||||
jpa.hibernate.ddl-auto=create
|
||||
#jpa.hibernate.ddl-auto=update
|
||||
jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
|
||||
jpa.show-sql=false
|
14
src/main/resources/development/mail.properties
Normal file
14
src/main/resources/development/mail.properties
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Naver SMTP
|
||||
mail.host=smtp.worksmobile.com
|
||||
mail.port=465
|
||||
mail.username=geek@loafle.com
|
||||
mail.password=@cosmos@5795
|
||||
mail.protocol=smtps
|
||||
|
||||
mail.properties.mail.smtp.auth=true
|
||||
mail.transport.protocol=smtp
|
||||
mail.properties.mail.smtp.starttls.enable=true
|
||||
mail.smtps.ssl.checkserveridentity=true
|
||||
mail.smtps.ssl.trust=*
|
||||
|
||||
|
4
src/main/resources/development/redis.properties
Normal file
4
src/main/resources/development/redis.properties
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Redis
|
||||
redis.host=192.168.1.50
|
||||
redis.port=6379
|
||||
redis.channels=/webapp,/probe,/auth
|
10
src/main/resources/development/velocity.properties
Normal file
10
src/main/resources/development/velocity.properties
Normal file
|
@ -0,0 +1,10 @@
|
|||
#resource.loader=jar
|
||||
#jar.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
#jar.runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
|
||||
#jar.runtime.log.logsystem.log4j.category=velocity
|
||||
#jar.resource.loader.cache=true
|
||||
resource.loader=class
|
||||
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
class.runtime.log.logsystem.log4j.category=velocity
|
||||
|
||||
input.encoding=UTF-8
|
BIN
src/main/resources/development/vmtemplates/overFlow_logo.png
Normal file
BIN
src/main/resources/development/vmtemplates/overFlow_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
72
src/main/resources/development/vmtemplates/password_reset.vm
Normal file
72
src/main/resources/development/vmtemplates/password_reset.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Resset Your Password
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">RESSET PASSWORD NOW</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
72
src/main/resources/development/vmtemplates/signup.vm
Normal file
72
src/main/resources/development/vmtemplates/signup.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Welcome to overFlow. Please Confirm your Email
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">Register Now</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
File diff suppressed because it is too large
Load Diff
3
src/main/resources/production/cache.properties
Normal file
3
src/main/resources/production/cache.properties
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Caffeine
|
||||
cache.cache-names:memberListByDomain,memberListByProbeKey
|
||||
cache.caffeine.spec: initialCapacity=100,maximumSize=500,expireAfterAccess=5m,recordStats
|
11
src/main/resources/production/database.properties
Normal file
11
src/main/resources/production/database.properties
Normal file
|
@ -0,0 +1,11 @@
|
|||
datasource.url=jdbc:postgresql://192.168.1.50:5432/overflow
|
||||
datasource.username=overflow
|
||||
datasource.password=qwer5795
|
||||
datasource.driver-class-name=org.postgresql.Driver
|
||||
|
||||
jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
|
||||
jpa.database=postgresql
|
||||
jpa.hibernate.ddl-auto=create
|
||||
#jpa.hibernate.ddl-auto=update
|
||||
jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
|
||||
jpa.show-sql=false
|
14
src/main/resources/production/mail.properties
Normal file
14
src/main/resources/production/mail.properties
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Naver SMTP
|
||||
mail.host=smtp.worksmobile.com
|
||||
mail.port=465
|
||||
mail.username=geek@loafle.com
|
||||
mail.password=@cosmos@5795
|
||||
mail.protocol=smtps
|
||||
|
||||
mail.properties.mail.smtp.auth=true
|
||||
mail.transport.protocol=smtp
|
||||
mail.properties.mail.smtp.starttls.enable=true
|
||||
mail.smtps.ssl.checkserveridentity=true
|
||||
mail.smtps.ssl.trust=*
|
||||
|
||||
|
4
src/main/resources/production/redis.properties
Normal file
4
src/main/resources/production/redis.properties
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Redis
|
||||
redis.host=192.168.1.50
|
||||
redis.port=6379
|
||||
redis.channels=/webapp,/probe,/auth
|
10
src/main/resources/production/velocity.properties
Normal file
10
src/main/resources/production/velocity.properties
Normal file
|
@ -0,0 +1,10 @@
|
|||
#resource.loader=jar
|
||||
#jar.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
#jar.runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
|
||||
#jar.runtime.log.logsystem.log4j.category=velocity
|
||||
#jar.resource.loader.cache=true
|
||||
resource.loader=class
|
||||
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
class.runtime.log.logsystem.log4j.category=velocity
|
||||
|
||||
input.encoding=UTF-8
|
BIN
src/main/resources/production/vmtemplates/overFlow_logo.png
Normal file
BIN
src/main/resources/production/vmtemplates/overFlow_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
72
src/main/resources/production/vmtemplates/password_reset.vm
Normal file
72
src/main/resources/production/vmtemplates/password_reset.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Resset Your Password
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">RESSET PASSWORD NOW</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
72
src/main/resources/production/vmtemplates/signup.vm
Normal file
72
src/main/resources/production/vmtemplates/signup.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Welcome to overFlow. Please Confirm your Email
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">Register Now</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
3
src/main/resources/staging/cache.properties
Normal file
3
src/main/resources/staging/cache.properties
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Caffeine
|
||||
cache.cache-names:memberListByDomain,memberListByProbeKey
|
||||
cache.caffeine.spec: initialCapacity=100,maximumSize=500,expireAfterAccess=5m,recordStats
|
11
src/main/resources/staging/database.properties
Normal file
11
src/main/resources/staging/database.properties
Normal file
|
@ -0,0 +1,11 @@
|
|||
datasource.url=jdbc:postgresql://192.168.1.50:5432/overflow
|
||||
datasource.username=overflow
|
||||
datasource.password=qwer5795
|
||||
datasource.driver-class-name=org.postgresql.Driver
|
||||
|
||||
jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
|
||||
jpa.database=postgresql
|
||||
jpa.hibernate.ddl-auto=create
|
||||
#jpa.hibernate.ddl-auto=update
|
||||
jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
|
||||
jpa.show-sql=false
|
14
src/main/resources/staging/mail.properties
Normal file
14
src/main/resources/staging/mail.properties
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Naver SMTP
|
||||
mail.host=smtp.worksmobile.com
|
||||
mail.port=465
|
||||
mail.username=geek@loafle.com
|
||||
mail.password=@cosmos@5795
|
||||
mail.protocol=smtps
|
||||
|
||||
mail.properties.mail.smtp.auth=true
|
||||
mail.transport.protocol=smtp
|
||||
mail.properties.mail.smtp.starttls.enable=true
|
||||
mail.smtps.ssl.checkserveridentity=true
|
||||
mail.smtps.ssl.trust=*
|
||||
|
||||
|
4
src/main/resources/staging/redis.properties
Normal file
4
src/main/resources/staging/redis.properties
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Redis
|
||||
redis.host=192.168.1.50
|
||||
redis.port=6379
|
||||
redis.channels=/webapp,/probe,/auth
|
10
src/main/resources/staging/velocity.properties
Normal file
10
src/main/resources/staging/velocity.properties
Normal file
|
@ -0,0 +1,10 @@
|
|||
#resource.loader=jar
|
||||
#jar.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
#jar.runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
|
||||
#jar.runtime.log.logsystem.log4j.category=velocity
|
||||
#jar.resource.loader.cache=true
|
||||
resource.loader=class
|
||||
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
|
||||
class.runtime.log.logsystem.log4j.category=velocity
|
||||
|
||||
input.encoding=UTF-8
|
BIN
src/main/resources/staging/vmtemplates/overFlow_logo.png
Normal file
BIN
src/main/resources/staging/vmtemplates/overFlow_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
72
src/main/resources/staging/vmtemplates/password_reset.vm
Normal file
72
src/main/resources/staging/vmtemplates/password_reset.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Resset Your Password
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">RESSET PASSWORD NOW</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
72
src/main/resources/staging/vmtemplates/signup.vm
Normal file
72
src/main/resources/staging/vmtemplates/signup.vm
Normal file
|
@ -0,0 +1,72 @@
|
|||
<xmeta charset="utf-8">
|
||||
<xmeta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<xmeta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:5px solid #d5d8dc;max-width: 600px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 20px;text-align:center; background: #203976;">
|
||||
<img src="cid:company-logo" width="206" height="36" alt=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 40px 20px 0px 20px;font-family: Arial, Helvetica, Sans-serif;color: #383838;font-size: 1.3em; font-weight: bold;">
|
||||
Welcome to overFlow. Please Confirm your Email
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px 20px;font-family: Arial, Helvetica, Sans-serif; color: #383838;">
|
||||
|
||||
<p>Dear ${firstName} ${lastName},</p>
|
||||
|
||||
<p>Sending Email <b>${content}</b></p>
|
||||
|
||||
<table style="border-collapse: collapse; margin: 0 auto; color: #ffffff;" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle" style="text-align: center; text-decoration: none!important; text-transform: uppercase; font-weight: 400; font-size: 16px; font-family: Arial, Helvetica, Sans-serif; color: #ffffff; background-color: #2185d0; background-clip: border-box; border-top-left-radius: 4px; border-bottom-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; padding: 10px 30px 10px 30px;" width="100%">
|
||||
<a href="${content}" target="_blank" style="color: #ffffff; text-decoration: none;" rel="noreferrer noopener">Register Now</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td style="border: 0; padding: 0; margin: 0; mso-line-height-rule: exactly;" height="15"></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Thanks</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 30px;font-family: Arial, Helvetica, Sans-serif;font-size: 0.8em; text-align:center;color:#eeeeee; background: #686868">
|
||||
<p>${signature}</p>
|
||||
|
||||
<p>${location}</p>
|
||||
|
||||
<p>Copyright ⓒ 2017 LOAFLE. All Rights Reserved.</p>
|
||||
<p><a href="" target="_blank" style="color:#eeeeee;">Help Center</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Privacy Policy</a> ·
|
||||
<a href="" target="_blank" style="color:#eeeeee;">Terms & Conditions</a></p>
|
||||
<p><a href="" style="color:#eeeeee;">Unsubscribe from this email</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xmeta>
|
||||
</xmeta>
|
||||
</xmeta>
|
Loading…
Reference in New Issue
Block a user