diff --git a/doc/conf/hosts b/doc/conf/hosts
new file mode 100644
index 00000000..ff50e621
--- /dev/null
+++ b/doc/conf/hosts
@@ -0,0 +1,25 @@
+# Copyright (c) 1993-2009 Microsoft Corp.
+#
+# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
+#
+# This file contains the mappings of IP addresses to host names. Each
+# entry should be kept on an individual line. The IP address should
+# be placed in the first column followed by the corresponding host name.
+# The IP address and the host name should be separated by at least one
+# space.
+#
+# Additionally, comments (such as these) may be inserted on individual
+# lines or following the machine name denoted by a '#' symbol.
+#
+# For example:
+#
+# 102.54.94.97 rhino.acme.com # source server
+# 38.25.63.10 x.acme.com # x client host
+
+# localhost name resolution is handled within DNS itself.
+127.0.0.1 localhost
+::1 localhost
+
+# 개발 repository server
+211.119.124.110 xit.xit-git.com
+211.119.124.110 xit.xit-nexus.com
diff --git a/doc/conf/settings.xml b/doc/conf/settings.xml
new file mode 100644
index 00000000..14ae5c7b
--- /dev/null
+++ b/doc/conf/settings.xml
@@ -0,0 +1,99 @@
+
+
+
+ C:/repo
+
+
+ maven-snapshot
+ xit-repo-user
+ xituser!@
+
+
+ maven-release
+ xit-repo-user
+ xituser!@
+
+
+ maven-3rdparty
+ xit-repo-user
+ xituser!@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nexus
+
+
+
+
+
+
+
+
+ nexus
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d89617f8..ef8ba247 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,9 +5,8 @@
xit
fims
war
- 1.0.0
+ 1.0.0-SNAPSHOT
fims
-
http://www.xit.co.kr
@@ -55,85 +54,16 @@
false
+
- local-repository
- file://${project.basedir}/repo
-
-
+
-
- org.thymeleaf
- thymeleaf
- 3.0.15.RELEASE
-
-
- org.thymeleaf
- thymeleaf-spring5
- 3.0.15.RELEASE
-
-
- nz.net.ultraq.thymeleaf
- thymeleaf-layout-dialect
- 3.1.0
-
-
-
-
-
-
-
-
egovframework.rte
egovframework.rte.fdl.logging
@@ -278,6 +208,22 @@
+
+ org.thymeleaf
+ thymeleaf
+ 3.0.15.RELEASE
+
+
+ org.thymeleaf
+ thymeleaf-spring5
+ 3.0.15.RELEASE
+
+
+ nz.net.ultraq.thymeleaf
+ thymeleaf-layout-dialect
+ 3.1.0
+
+
javax.servlet
servlet-api
@@ -735,7 +681,6 @@
-
+
org.apache.maven.plugins
@@ -1000,71 +942,30 @@
-
- ${basedir}/target/site
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
- 2.7
-
-
- sunlink
-
- javadoc
-
- true
-
-
- http://docs.oracle.com/javase/6/docs/api/
-
-
-
-
-
-
-
- org.codehaus.mojo
- emma-maven-plugin
- true
-
-
- org.codehaus.mojo
- surefire-report-maven-plugin
- true
-
-
-
- report-only
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
- 128m
- 512m
- ${encoding}
- ${encoding}
- ${encoding}
-
-
-
-
- org.apache.maven.plugins
- maven-jxr-plugin
-
- ${encoding}
- ${encoding}
- true
- apidocs
-
-
-
-
+
+
+
+
+ maven-snapshot
+
+ http://xit.xit-nexus.com:8081/repository/maven-snapshots/
+
+ true
+ always
+
+
+ false
+
+
+
+
+ maven-release
+ http://xit.xit-nexus.com:8081/repository/maven-releases/
+
+
+
+
+
@@ -1099,6 +1000,7 @@
false
+
diff --git a/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar b/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar
deleted file mode 100644
index 9bba7cbe..00000000
Binary files a/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar and /dev/null differ
diff --git a/src/main/java/kr/xit/framework/support/cert/InstallCert.java b/src/main/java/kr/xit/framework/support/cert/InstallCert.java
new file mode 100644
index 00000000..e746234b
--- /dev/null
+++ b/src/main/java/kr/xit/framework/support/cert/InstallCert.java
@@ -0,0 +1,216 @@
+package kr.xit.framework.support.cert;/*
+ * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of Sun Microsystems nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * check out this {@link https://www.lesstif.com/pages/viewpage.action?pageId=12451848}
+ *
+ * Usage:
+ *
+ * 1. download source
+ * curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java
+ *
+ * 2. compiling
+ * javac InstallCert.java
+ *
+ * 3. Run
+ * java -cp . InstallCert https://google.com:443
+ *
+ * 4. save peer's ssl cert to keystore(name is jssecacerts)
+ *
+ * 5. extract cert from saved keystore
+ * keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias letsencrypt
+ *
+ * 6. import cert into JDK's keystore
+ * keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit -file output.cert -alias letsencrypt
+ *
+ */
+
+/**
+ * http://blogs.sun.com/andreas/resource/InstallCert.java
+ * Use:
+ * java InstallCert hostname
+ * Example:
+ *% java InstallCert ecc.fedora.redhat.com
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.security.KeyStore;
+import java.security.MessageDigest;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+/**
+ * Class used to add the server's certificate to the KeyStore
+ * with your trusted certificates.
+ */
+public class InstallCert {
+ public static void main(String[] args) throws Exception {
+ String host;
+ int port;
+ char[] passphrase;
+ if ((args.length == 1) || (args.length == 2)) {
+ String[] c = args[0].split(":");
+ host = c[0];
+ port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
+ String p = (args.length == 1) ? "changeit" : args[1];
+ passphrase = p.toCharArray();
+ } else {
+ System.out.println("Usage: java InstallCert [:port] [passphrase]");
+ return;
+ }
+ File file = new File("jssecacerts");
+ if (file.isFile() == false) {
+ char SEP = File.separatorChar;
+ File dir = new File(System.getProperty("java.home") + SEP
+ + "lib" + SEP + "security");
+ file = new File(dir, "jssecacerts");
+ if (file.isFile() == false) {
+ file = new File(dir, "cacerts");
+ }
+ }
+ System.out.println("Loading KeyStore " + file + "...");
+ InputStream in = new FileInputStream(file);
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ ks.load(in, passphrase);
+ in.close();
+ SSLContext context = SSLContext.getInstance("TLS");
+ TrustManagerFactory tmf =
+ TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmf.init(ks);
+ X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
+ SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
+ context.init(null, new TrustManager[]{tm}, null);
+ SSLSocketFactory factory = context.getSocketFactory();
+ System.out.println("Opening connection to " + host + ":" + port + "...");
+ SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
+ socket.setSoTimeout(10000);
+ try {
+ System.out.println("Starting SSL handshake...");
+ socket.startHandshake();
+ socket.close();
+ System.out.println();
+ System.out.println("No errors, certificate is already trusted");
+ } catch (SSLException e) {
+ System.out.println();
+ e.printStackTrace(System.out);
+ }
+ X509Certificate[] chain = tm.chain;
+ if (chain == null) {
+ System.out.println("Could not obtain server certificate chain");
+ return;
+ }
+ BufferedReader reader =
+ new BufferedReader(new InputStreamReader(System.in));
+ System.out.println();
+ System.out.println("Server sent " + chain.length + " certificate(s):");
+ System.out.println();
+ MessageDigest sha1 = MessageDigest.getInstance("SHA1");
+ MessageDigest md5 = MessageDigest.getInstance("MD5");
+ for (int i = 0; i < chain.length; i++) {
+ X509Certificate cert = chain[i];
+ System.out.println
+ (" " + (i + 1) + " Subject " + cert.getSubjectDN());
+ System.out.println(" Issuer " + cert.getIssuerDN());
+ sha1.update(cert.getEncoded());
+ System.out.println(" sha1 " + toHexString(sha1.digest()));
+ md5.update(cert.getEncoded());
+ System.out.println(" md5 " + toHexString(md5.digest()));
+ System.out.println();
+ }
+ System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
+ String line = reader.readLine().trim();
+ int k;
+ try {
+ k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
+ } catch (NumberFormatException e) {
+ System.out.println("KeyStore not changed");
+ return;
+ }
+ X509Certificate cert = chain[k];
+ String alias = host + "-" + (k + 1);
+ ks.setCertificateEntry(alias, cert);
+ OutputStream out = new FileOutputStream("jssecacerts");
+ ks.store(out, passphrase);
+ out.close();
+ System.out.println();
+ System.out.println(cert);
+ System.out.println();
+ System.out.println
+ ("Added certificate to keystore 'jssecacerts' using alias '"
+ + alias + "'");
+ }
+ private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
+ private static String toHexString(byte[] bytes) {
+ StringBuilder sb = new StringBuilder(bytes.length * 3);
+ for (int b : bytes) {
+ b &= 0xff;
+ sb.append(HEXDIGITS[b >> 4]);
+ sb.append(HEXDIGITS[b & 15]);
+ sb.append(' ');
+ }
+ return sb.toString();
+ }
+ private static class SavingTrustManager implements X509TrustManager {
+ private final X509TrustManager tm;
+ private X509Certificate[] chain;
+ SavingTrustManager(X509TrustManager tm) {
+ this.tm = tm;
+ }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[0];
+ }
+
+ public void checkClientTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ throw new UnsupportedOperationException();
+ }
+ public void checkServerTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ this.chain = chain;
+ tm.checkServerTrusted(chain, authType);
+ }
+ }
+}