diff --git a/pom.xml b/pom.xml
index d6f085a..f7fe939 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,13 +166,14 @@
- compile
org.springframework.boot
spring-boot-maven-plugin
+
+ true
+
-
diff --git a/sql/picturebed.sql b/sql/picturebed.sql
index 4eabf1b..72a4d36 100644
--- a/sql/picturebed.sql
+++ b/sql/picturebed.sql
@@ -1,432 +1,245 @@
--- phpMyAdmin SQL Dump
--- version 4.7.9
--- https://www.phpmyadmin.net/
---
--- Host: localhost
--- Generation Time: 2019-08-25 16:13:11
--- 服务器版本: 5.5.62-log
--- PHP Version: 7.2.18
+/*
+ Navicat Premium Data Transfer
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET AUTOCOMMIT = 0;
-START TRANSACTION;
-SET time_zone = "+00:00";
+ Source Server : Hellohao
+ Source Server Type : MySQL
+ Source Server Version : 50562
+ Source Host : 129.28.173.126:3306
+ Source Schema : picturebed
+ Target Server Type : MySQL
+ Target Server Version : 50562
+ File Encoding : 65001
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8mb4 */;
+ Date: 29/08/2019 13:50:42
+*/
---
--- Database: `picturebedpro`
---
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
--- --------------------------------------------------------
-
---
--- 表的结构 `code`
---
-
-CREATE TABLE `code` (
- `id` int(255) NOT NULL,
+-- ----------------------------
+-- Table structure for code
+-- ----------------------------
+DROP TABLE IF EXISTS `code`;
+CREATE TABLE `code` (
+ `id` int(255) NOT NULL AUTO_INCREMENT,
`value` int(20) NOT NULL,
- `code` varchar(500) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ `code` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
--- --------------------------------------------------------
+-- ----------------------------
+-- Table structure for config
+-- ----------------------------
+DROP TABLE IF EXISTS `config`;
+CREATE TABLE `config` (
+ `id` int(4) NOT NULL AUTO_INCREMENT,
+ `sourcekey` int(4) NULL DEFAULT NULL,
+ `emails` int(4) NULL DEFAULT NULL COMMENT '邮箱配置',
+ `webname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '网站名',
+ `explain` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首页左下角说明',
+ `video` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '视频地址',
+ `backtype` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景类型',
+ `links` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备案号',
+ `notice` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公告',
+ `baidu` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '百度统计',
+ `domain` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '站点域名',
+ `background1` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首页背景图',
+ `background2` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '上传页面背景图',
+ `sett` int(2) NOT NULL COMMENT '首页样式',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
---
--- 表的结构 `config`
---
+-- ----------------------------
+-- Records of config
+-- ----------------------------
+INSERT INTO `config` VALUES (1, 1, 1, 'Hellohao', '网站由JAVA语言编写应用SpringBoot框架开发,前端全部组件由BootStrap/Layui框架编写。由作者个人更新维护,后期会加入更全面的功能供大家使用,如有BUG请与我反馈。', 'https://hellohao-cloud.oss-cn-beijing.aliyuncs.com/Pexels.mp4', '1', 'Hellohao©技术支持', '也许...|这将是最好用的图床', 'console.log(\'百度统计JS代码\');', 'http://127.0.0.1:8088', 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1565769264&di=74d809d6cfae81bbab83bf9d573d8f9a&src=http://pic17.nipic.com/20110917/7420038_160826355111_2.jpg', 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1565769264&di=74d809d6cfae81bbab83bf9d573d8f9a&src=http://pic17.nipic.com/20110917/7420038_160826355111_2.jpg', 1);
-CREATE TABLE `config` (
+-- ----------------------------
+-- Table structure for emailconfig
+-- ----------------------------
+DROP TABLE IF EXISTS `emailconfig`;
+CREATE TABLE `emailconfig` (
+ `id` int(2) NOT NULL AUTO_INCREMENT,
+ `emails` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
+ `emailkey` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '授权码',
+ `emailurl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '服务器',
+ `port` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '端口',
+ `emailname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
+ `using` int(4) NULL DEFAULT NULL COMMENT '1为可用,其他为不使用',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Records of emailconfig
+-- ----------------------------
+INSERT INTO `emailconfig` VALUES (1, '', '', '', '', '', 0);
+
+-- ----------------------------
+-- Table structure for group
+-- ----------------------------
+DROP TABLE IF EXISTS `group`;
+CREATE TABLE `group` (
+ `id` int(255) NOT NULL AUTO_INCREMENT,
+ `groupname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '组名称',
+ `keyid` int(255) NULL DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Records of group
+-- ----------------------------
+INSERT INTO `group` VALUES (1, '默认群组', 5);
+
+-- ----------------------------
+-- Table structure for imgdata
+-- ----------------------------
+DROP TABLE IF EXISTS `imgdata`;
+CREATE TABLE `imgdata` (
+ `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `imgname` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片名',
+ `imgurl` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片链接',
+ `userid` int(10) NULL DEFAULT NULL COMMENT '用户名',
+ `updatetime` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '上传时间',
+ `sizes` int(255) NULL DEFAULT NULL COMMENT '文件大小',
+ `abnormal` int(2) NULL DEFAULT NULL COMMENT '异常',
+ `source` int(2) NULL DEFAULT NULL COMMENT '存储源',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Table structure for imgreview
+-- ----------------------------
+DROP TABLE IF EXISTS `imgreview`;
+CREATE TABLE `imgreview` (
+ `id` int(4) NOT NULL AUTO_INCREMENT,
+ `app_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `api_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `secret_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Using` int(4) NULL DEFAULT NULL,
+ `count` int(255) NULL DEFAULT NULL COMMENT '拦截数量',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Records of imgreview
+-- ----------------------------
+INSERT INTO `imgreview` VALUES (1, NULL, NULL, NULL, 0, 0);
+
+-- ----------------------------
+-- Table structure for keys
+-- ----------------------------
+DROP TABLE IF EXISTS `keys`;
+CREATE TABLE `keys` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `AccessKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `AccessSecret` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Endpoint` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Bucketname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `RequestAddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `storageType` int(11) NULL DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Records of keys
+-- ----------------------------
+INSERT INTO `keys` VALUES (1, '547046ec6495457783f040df098a8ce3', '255b334a4d174e95a3d9e5938f1966ab', 'https://nos-eastchina1.126.net', 'hellohao', 'https://hellohao.nos-eastchina1.126.net', 1);
+INSERT INTO `keys` VALUES (2, '', '', '', '', '', 2);
+INSERT INTO `keys` VALUES (3, '', '', '', '', '', 3);
+INSERT INTO `keys` VALUES (4, '', '', '', '', '', 4);
+INSERT INTO `keys` VALUES (5, '0', '0', '0', '0', '0', 5);
+INSERT INTO `keys` VALUES (6, '', '', '', '', '', 6);
+INSERT INTO `keys` VALUES (7, '', '', '', '', '', 7);
+INSERT INTO `keys` VALUES (8, '', '', '', '', '', 8);
+INSERT INTO `keys` VALUES (9, '', '', '', '', '', 9);
+INSERT INTO `keys` VALUES (10, '0', '', '0', '0', '0', 10);
+
+-- ----------------------------
+-- Table structure for notice
+-- ----------------------------
+DROP TABLE IF EXISTS `notice`;
+CREATE TABLE `notice` (
`id` int(4) NOT NULL,
- `sourcekey` int(4) DEFAULT NULL,
- `emails` int(4) DEFAULT NULL,
- `webname` varchar(255) DEFAULT NULL COMMENT '网站名',
- `explain` varchar(500) DEFAULT NULL COMMENT '首页左下角说明',
- `video` varchar(500) DEFAULT NULL COMMENT '视频地址',
- `backtype` varchar(500) DEFAULT NULL COMMENT '背景类型',
- `links` varchar(255) DEFAULT NULL COMMENT '友链',
- `notice` varchar(500) DEFAULT NULL COMMENT '公告',
- `baidu` varchar(500) DEFAULT NULL COMMENT '百度统计',
- `domain` varchar(255) DEFAULT NULL COMMENT '站点域名',
- `background1` varchar(500) DEFAULT NULL COMMENT '首页背景图',
- `background2` varchar(500) DEFAULT NULL COMMENT '上传页面背景图',
- `sett` int(2) NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
+ `text` varchar(10000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
---
--- 转存表中的数据 `config`
---
+-- ----------------------------
+-- Table structure for sysconfig
+-- ----------------------------
+DROP TABLE IF EXISTS `sysconfig`;
+CREATE TABLE `sysconfig` (
+ `id` int(2) NOT NULL AUTO_INCREMENT,
+ `register` int(2) NOT NULL COMMENT '是否可以注册',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-INSERT INTO `config` (`id`, `sourcekey`, `emails`, `webname`, `explain`, `video`, `backtype`, `links`, `notice`, `baidu`, `domain`, `background1`, `background2`, `sett`) VALUES
-(1, 5, 1, 'Hellohao', '网站由JAVA语言编写应用SpringBoot框架开发,前端全部组件由BootStrap/Layui框架编写。由作者个人更新维护,后期会加入更全面的功能供大家使用,如有BUG请与我反馈。', 'https://hellohao-cloud.oss-cn-beijing.aliyuncs.com/Pexels.mp4', '2', '
作者博客高清壁纸json格式化', '也许...|这将是最好用的图床', 'console.log(\'百度统计JS代码\');', 'http://tc.hellohao.cn', 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1565769264&di=74d809d6cfae81bbab83bf9d573d8f9a&src=http://pic17.nipic.com/20110917/7420038_160826355111_2.jpg', 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1565769264&di=74d809d6cfae81bbab83bf9d573d8f9a&src=http://pic17.nipic.com/20110917/7420038_160826355111_2.jpg', 1);
+-- ----------------------------
+-- Records of sysconfig
+-- ----------------------------
+INSERT INTO `sysconfig` VALUES (1, 1);
--- --------------------------------------------------------
-
---
--- 表的结构 `emailconfig`
---
-
-CREATE TABLE `emailconfig` (
- `id` int(2) NOT NULL,
- `emails` varchar(255) DEFAULT NULL COMMENT '邮箱',
- `emailkey` varchar(255) DEFAULT NULL COMMENT '授权码',
- `emailurl` varchar(255) DEFAULT NULL COMMENT '服务器',
- `port` varchar(255) DEFAULT NULL COMMENT '端口',
- `emailname` varchar(255) DEFAULT NULL COMMENT '用户名',
- `using` int(4) DEFAULT NULL COMMENT '1为可用,其他为不使用'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-
---
--- 转存表中的数据 `emailconfig`
---
-
-INSERT INTO `emailconfig` (`id`, `emails`, `emailkey`, `emailurl`, `port`, `emailname`, `using`) VALUES
-(1, '', '', '', '', '', 0);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `group`
---
-
-CREATE TABLE `group` (
- `id` int(255) NOT NULL,
- `groupname` varchar(255) NOT NULL COMMENT '组名称',
- `keyid` int(255) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
---
--- 转存表中的数据 `group`
---
-
-INSERT INTO `group` (`id`, `groupname`, `keyid`) VALUES
-(1, '默认群组', 5);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `imgdata`
---
-
-CREATE TABLE `imgdata` (
- `id` int(10) NOT NULL COMMENT '主键',
- `imgname` varchar(500) DEFAULT NULL COMMENT '图片名',
- `imgurl` varchar(500) DEFAULT NULL COMMENT '图片链接',
- `userid` int(10) DEFAULT NULL COMMENT '用户名',
- `updatetime` varchar(50) DEFAULT NULL COMMENT '上传时间',
- `sizes` int(255) DEFAULT NULL COMMENT '文件大小',
- `abnormal` int(2) DEFAULT NULL COMMENT '异常',
- `source` int(2) DEFAULT NULL COMMENT '存储源'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-
---
--- 转存表中的数据 `imgdata`
---
-
-INSERT INTO `imgdata` (`id`, `imgname`, `imgurl`, `userid`, `updatetime`, `sizes`, `abnormal`, `source`) VALUES
-(28, 'admin/4cc700823104929.png', 'https://hellohao.nos-eastchina1.126.net/admin/4cc700823104929.png', 1, '2019-08-23', 263, NULL, 1),
-(29, 'tourist/9c6560823105311.png', 'https://hellohao.nos-eastchina1.126.net/tourist/9c6560823105311.png', 0, '2019-08-23', 273, NULL, 1);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `imgreview`
---
-
-CREATE TABLE `imgreview` (
- `id` int(4) NOT NULL,
- `app_id` varchar(255) DEFAULT NULL,
- `api_key` varchar(255) DEFAULT NULL,
- `secret_key` varchar(255) DEFAULT NULL,
- `Using` int(4) DEFAULT NULL,
- `count` int(10) DEFAULT NULL COMMENT '拦截数量'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-
---
--- 转存表中的数据 `imgreview`
---
-
-INSERT INTO `imgreview` (`id`, `app_id`, `api_key`, `secret_key`, `Using`, `count`) VALUES
-(1, NULL, NULL, NULL, 0, 0);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `keys`
---
-
-CREATE TABLE `keys` (
- `id` int(11) NOT NULL,
- `AccessKey` varchar(255) DEFAULT NULL,
- `AccessSecret` varchar(255) DEFAULT NULL,
- `Endpoint` varchar(255) DEFAULT NULL,
- `Bucketname` varchar(255) DEFAULT NULL,
- `RequestAddress` varchar(255) DEFAULT NULL,
- `storageType` int(11) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-
---
--- 转存表中的数据 `keys`
---
-
-INSERT INTO `keys` (`id`, `AccessKey`, `AccessSecret`, `Endpoint`, `Bucketname`, `RequestAddress`, `storageType`) VALUES
-(1, '', '', '', '', 'https://hellohao.nos-eastchina1.126.net', 1),
-(2, '', '', '', '', '', 2),
-(3, '', '', '', '', '', 3),
-(4, '', '', '', '', '', 4),
-(5, '0', '0', '0', '0', '0', 5),
-(6, '', '', '', '', '', 6),
-(7, '', '', '', '', '', 7),
-(8, '', '', '', '', '', 8),
-(9, '', '', '', '', '', 9),
-(10, '0', '', '0', '0', '0', 10);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `notice`
---
-
-CREATE TABLE `notice` (
- `id` int(4) NOT NULL,
- `text` varchar(10000) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-
--- --------------------------------------------------------
-
---
--- 表的结构 `sysconfig`
---
-
-CREATE TABLE `sysconfig` (
- `id` int(2) NOT NULL,
- `register` int(2) NOT NULL COMMENT '是否可以注册'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
---
--- 转存表中的数据 `sysconfig`
---
-
-INSERT INTO `sysconfig` (`id`, `register`) VALUES
-(1, 1);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `uploadconfig`
---
-
-CREATE TABLE `uploadconfig` (
- `id` int(2) NOT NULL,
- `filesizetourists` int(10) DEFAULT NULL COMMENT '游客上传文件最大',
- `filesizeuser` int(10) DEFAULT NULL COMMENT '用户上传文件最大',
- `imgcounttourists` int(10) DEFAULT NULL COMMENT '游客文件总数量, 超出则不允许加入队列',
- `imgcountuser` int(10) DEFAULT NULL COMMENT '用户文件总数量, 超出则不允许加入队列',
- `suffix` varchar(255) DEFAULT NULL COMMENT '支持后缀',
- `urltype` int(2) DEFAULT NULL,
- `isupdate` int(2) DEFAULT NULL COMMENT '禁止游客上传',
+-- ----------------------------
+-- Table structure for uploadconfig
+-- ----------------------------
+DROP TABLE IF EXISTS `uploadconfig`;
+CREATE TABLE `uploadconfig` (
+ `id` int(2) NOT NULL AUTO_INCREMENT,
+ `filesizetourists` int(10) NULL DEFAULT NULL COMMENT '游客上传文件最大',
+ `filesizeuser` int(10) NULL DEFAULT NULL COMMENT '用户上传文件最大',
+ `imgcounttourists` int(10) NULL DEFAULT NULL COMMENT '游客文件总数量, 超出则不允许加入队列',
+ `imgcountuser` int(10) NULL DEFAULT NULL COMMENT '用户文件总数量, 超出则不允许加入队列',
+ `suffix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '支持后缀',
+ `urltype` int(2) NULL DEFAULT NULL COMMENT 'url类型',
+ `isupdate` int(2) NULL DEFAULT NULL COMMENT '禁止游客上传',
`api` int(2) NOT NULL COMMENT '开启api',
- `visitormemory` int(10) DEFAULT NULL COMMENT '游客限制大小',
- `usermemory` int(10) DEFAULT '0' COMMENT '用户默认大小'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
+ `visitormemory` int(10) NULL DEFAULT NULL COMMENT '游客限制大小',
+ `usermemory` int(10) NULL DEFAULT 0 COMMENT '用户默认大小',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
---
--- 转存表中的数据 `uploadconfig`
---
+-- ----------------------------
+-- Records of uploadconfig
+-- ----------------------------
+INSERT INTO `uploadconfig` VALUES (1, 3, 5, 1, 5, 'gif,jpg,jpeg,bmp,png', 1, 1, 0, 500, 1024);
-INSERT INTO `uploadconfig` (`id`, `filesizetourists`, `filesizeuser`, `imgcounttourists`, `imgcountuser`, `suffix`, `urltype`, `isupdate`, `api`, `visitormemory`, `usermemory`) VALUES
-(1, 3, 5, 1, 5, 'gif,jpg,jpeg,bmp,png', 1, 1, 0, 500, 1024);
-
--- --------------------------------------------------------
-
---
--- 表的结构 `user`
---
-
-CREATE TABLE `user` (
- `id` int(10) NOT NULL COMMENT '主键',
- `username` varchar(50) NOT NULL COMMENT '用户名',
- `password` varchar(50) NOT NULL COMMENT '密码',
- `email` varchar(20) NOT NULL COMMENT '邮箱',
- `birthder` date DEFAULT NULL COMMENT '注册时间',
- `level` int(10) DEFAULT NULL COMMENT '等级',
- `uid` varchar(50) DEFAULT NULL COMMENT '用户唯一标识',
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user` (
+ `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
+ `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
+ `email` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮箱',
+ `birthder` date NULL DEFAULT NULL COMMENT '注册时间',
+ `level` int(10) NULL DEFAULT NULL COMMENT '等级',
+ `uid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户唯一标识',
`isok` int(2) NOT NULL,
- `memory` int(10) DEFAULT NULL COMMENT '用户内存大小',
- `groupid` int(255) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
+ `memory` int(10) NULL DEFAULT NULL COMMENT '用户内存大小',
+ `groupid` int(255) NULL DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
---
--- 转存表中的数据 `user`
---
+-- ----------------------------
+-- Records of user
+-- ----------------------------
+INSERT INTO `user` VALUES (1, 'admin', 'YWRtaW4=', 'admin', '2019-06-12', 2, 'admin', 1, 1024, 1);
-INSERT INTO `user` (`id`, `username`, `password`, `email`, `birthder`, `level`, `uid`, `isok`, `memory`, `groupid`) VALUES
-(1, 'admin', 'admin', 'admin', '2019-06-12', 2, 'admin', 1, 1024, 1);
+-- ----------------------------
+-- Table structure for usergroup
+-- ----------------------------
+DROP TABLE IF EXISTS `usergroup`;
+CREATE TABLE `usergroup` (
+ `id` int(255) NOT NULL AUTO_INCREMENT,
+ `userid` int(255) NULL DEFAULT NULL,
+ `groupid` int(255) NULL DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
--- --------------------------------------------------------
+-- ----------------------------
+-- Records of usergroup
+-- ----------------------------
+INSERT INTO `usergroup` VALUES (1, 1, 1);
---
--- 表的结构 `usergroup`
---
-
-CREATE TABLE `usergroup` (
- `id` int(255) NOT NULL,
- `userid` int(255) DEFAULT NULL,
- `groupid` int(255) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
---
--- 转存表中的数据 `usergroup`
---
-
-INSERT INTO `usergroup` (`id`, `userid`, `groupid`) VALUES
-(1, 1, 1);
-
---
--- Indexes for dumped tables
---
-
---
--- Indexes for table `code`
---
-ALTER TABLE `code`
- ADD PRIMARY KEY (`id`);
-
---
--- Indexes for table `config`
---
-ALTER TABLE `config`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `emailconfig`
---
-ALTER TABLE `emailconfig`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `group`
---
-ALTER TABLE `group`
- ADD PRIMARY KEY (`id`);
-
---
--- Indexes for table `imgdata`
---
-ALTER TABLE `imgdata`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `imgreview`
---
-ALTER TABLE `imgreview`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `keys`
---
-ALTER TABLE `keys`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `sysconfig`
---
-ALTER TABLE `sysconfig`
- ADD PRIMARY KEY (`id`);
-
---
--- Indexes for table `uploadconfig`
---
-ALTER TABLE `uploadconfig`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `user`
---
-ALTER TABLE `user`
- ADD PRIMARY KEY (`id`) USING BTREE;
-
---
--- Indexes for table `usergroup`
---
-ALTER TABLE `usergroup`
- ADD PRIMARY KEY (`id`);
-
---
--- 在导出的表使用AUTO_INCREMENT
---
-
---
--- 使用表AUTO_INCREMENT `code`
---
-ALTER TABLE `code`
- MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=100;
-
---
--- 使用表AUTO_INCREMENT `config`
---
-ALTER TABLE `config`
- MODIFY `id` int(4) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
-
---
--- 使用表AUTO_INCREMENT `emailconfig`
---
-ALTER TABLE `emailconfig`
- MODIFY `id` int(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
-
---
--- 使用表AUTO_INCREMENT `group`
---
-ALTER TABLE `group`
- MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
-
---
--- 使用表AUTO_INCREMENT `imgdata`
---
-ALTER TABLE `imgdata`
- MODIFY `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=30;
-
---
--- 使用表AUTO_INCREMENT `imgreview`
---
-ALTER TABLE `imgreview`
- MODIFY `id` int(4) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
-
---
--- 使用表AUTO_INCREMENT `keys`
---
-ALTER TABLE `keys`
- MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
-
---
--- 使用表AUTO_INCREMENT `sysconfig`
---
-ALTER TABLE `sysconfig`
- MODIFY `id` int(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
-
---
--- 使用表AUTO_INCREMENT `uploadconfig`
---
-ALTER TABLE `uploadconfig`
- MODIFY `id` int(2) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
-
---
--- 使用表AUTO_INCREMENT `user`
---
-ALTER TABLE `user`
- MODIFY `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=14;
-
---
--- 使用表AUTO_INCREMENT `usergroup`
---
-ALTER TABLE `usergroup`
- MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
-COMMIT;
-
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/src/main/java/cn/hellohao/controller/AdminController.java b/src/main/java/cn/hellohao/controller/AdminController.java
index b919813..4edd30f 100644
--- a/src/main/java/cn/hellohao/controller/AdminController.java
+++ b/src/main/java/cn/hellohao/controller/AdminController.java
@@ -5,10 +5,7 @@ import cn.hellohao.pojo.vo.PageResultBean;
import cn.hellohao.service.*;
import cn.hellohao.service.impl.ImgServiceImpl;
import cn.hellohao.service.impl.UserServiceImpl;
-import cn.hellohao.utils.GetCurrentSource;
-import cn.hellohao.utils.LocUpdateImg;
-import cn.hellohao.utils.Print;
-import cn.hellohao.utils.StringUtils;
+import cn.hellohao.utils.*;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
@@ -19,6 +16,7 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -202,12 +200,19 @@ public class AdminController {
// 从他的下一条sql开始分页
PageHelper.startPage(page, limit);
List users = null;
+ List users2 = new ArrayList<>();
if (u.getLevel() > 1) { //根据用户等级查询管理员查询所有的信息
User user = new User();
user.setUsername(username);
users = userService.getuserlist(user);// 这是我们的sql
+ for (User user1 : users) {
+ User uu = new User();
+ uu = user1;
+ uu.setPassword(Base64Encryption.decryptBASE64(user1.getPassword()));
+ users2.add(uu);
+ }
// 使用pageInfo包装查询
- PageInfo rolePageInfo = new PageInfo<>(users);//
+ PageInfo rolePageInfo = new PageInfo<>(users2);//
Map map = new HashMap();
map.put("code", 0);
map.put("msg", "");
@@ -335,16 +340,21 @@ public class AdminController {
@ResponseBody
public String change(HttpSession session, User user) {
User u = (User) session.getAttribute("user");
+ User us = new User();
//user.setEmail(u.getEmail());
- user.setUid(u.getUid());
+ us.setEmail(user.getEmail());
+ us.setUsername(user.getUsername());
+ us.setPassword(Base64Encryption.encryptBASE64(user.getPassword().getBytes()));
+ us.setUid(u.getUid());
+ //user.setUid(u.getUid());
JSONArray jsonArray = new JSONArray();
Integer ret =0;
if(u.getLevel()==1){
- user.setUsername(null);
- user.setEmail(null);
- ret = userService.change(user);
+ us.setUsername(null);
+ us.setEmail(null);
+ ret = userService.change(us);
}else{
- ret = userService.change(user);
+ ret = userService.change(us);
}
jsonArray.add(ret);
if (u.getEmail() != null && u.getPassword() != null) {
diff --git a/src/main/java/cn/hellohao/controller/AdminRootController.java b/src/main/java/cn/hellohao/controller/AdminRootController.java
index 3f0e0dc..2ea02ff 100644
--- a/src/main/java/cn/hellohao/controller/AdminRootController.java
+++ b/src/main/java/cn/hellohao/controller/AdminRootController.java
@@ -2,7 +2,9 @@ package cn.hellohao.controller;
import cn.hellohao.pojo.*;
import cn.hellohao.service.*;
+import cn.hellohao.service.impl.*;
import cn.hellohao.utils.GetCurrentSource;
+import cn.hellohao.utils.Print;
import cn.hellohao.utils.StringUtils;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
@@ -21,7 +23,8 @@ import java.util.HashMap;
@Controller
@RequestMapping("/admin/root")
public class AdminRootController {
-
+ @Autowired
+ private NOSImageupload nOSImageupload;
@Autowired
private ConfigService configService;
@Autowired
@@ -112,12 +115,36 @@ public class AdminRootController {
Config config = new Config();
config.setSourcekey(key.getStorageType());
Integer val = configService.setSourceype(config);
- if (val > 0) {
- Integer ret = keysService.updateKey(key);
- jsonArray.add(ret);
- } else {
- jsonArray.add(0);
+ //if (val > 0) {
+ Integer ret = -2;
+ //修改完初始化
+ if(key.getStorageType()==1){
+ ret =nOSImageupload.Initialize(key);//实例化网易
+ }else if (key.getStorageType()==2){
+ ret = OSSImageupload.Initialize(key);
+ }else if(key.getStorageType()==3){
+ ret = USSImageupload.Initialize(key);
+ }else if(key.getStorageType()==4){
+ ret = KODOImageupload.Initialize(key);
+ }else if(key.getStorageType()==6){
+ ret = COSImageupload.Initialize(key);
+ }else if(key.getStorageType()==7){
+ ret = FTPImageupload.Initialize(key);
}
+ else{
+ Print.Normal("为获取到存储参数,或者使用存储源是本地的。");
+ }
+ if(ret>0){
+ ret = keysService.updateKey(key);
+ }
+
+ //-1 对象存储有参数为空,初始化失败
+ //0,保存失败
+ //1 正确
+ jsonArray.add(ret);
+ //} else {
+ //jsonArray.add(0);
+ // }
return jsonArray.toString();
}
diff --git a/src/main/java/cn/hellohao/controller/ClientController.java b/src/main/java/cn/hellohao/controller/ClientController.java
index 80703b9..4a20c88 100644
--- a/src/main/java/cn/hellohao/controller/ClientController.java
+++ b/src/main/java/cn/hellohao/controller/ClientController.java
@@ -224,6 +224,21 @@ public class ClientController {
return "-1";//-1就是没有公告,客户端不显示
}
-
+ //主端接口
+ @PostMapping("/systemupdate")
+ @ResponseBody
+ public String sysupdate(String dates) {
+ Integer i=dates.compareTo(systemupdate);//小于0则需要更新
+ System.out.println(i);
+ return i.toString();
+ }
+ //主端接口
+ @PostMapping("/getdomain")
+ @ResponseBody
+ public String getdomain(String domain) {
+ Integer count = domainService.getDomain(domain);
+ //System.out.println(i);
+ return count.toString();
+ }
}
diff --git a/src/main/java/cn/hellohao/controller/ExceptionHandling.java b/src/main/java/cn/hellohao/controller/ExceptionHandling.java
index 021164b..1f7c515 100644
--- a/src/main/java/cn/hellohao/controller/ExceptionHandling.java
+++ b/src/main/java/cn/hellohao/controller/ExceptionHandling.java
@@ -35,6 +35,7 @@ public class ExceptionHandling {
public String test4(SocketException e){
ModelAndView modelAndView = new ModelAndView("/index");
Print.Normal("存储源配置不正确,初始化失败"+ e.getMessage());
+ e.printStackTrace();
modelAndView.addObject("error",e.getMessage());
//返回错误信息,并显示给用户
return e.getMessage();
@@ -43,6 +44,7 @@ public class ExceptionHandling {
public String test3(Exception e){
ModelAndView modelAndView = new ModelAndView("/index");
Print.Normal("系统内部错误:"+ e.getMessage());
+ e.printStackTrace();
modelAndView.addObject("error",e.getMessage());
//返回错误信息,并显示给用户
return e.getMessage();
diff --git a/src/main/java/cn/hellohao/controller/UpdateImgController.java b/src/main/java/cn/hellohao/controller/UpdateImgController.java
index 5435242..5b33011 100644
--- a/src/main/java/cn/hellohao/controller/UpdateImgController.java
+++ b/src/main/java/cn/hellohao/controller/UpdateImgController.java
@@ -72,33 +72,7 @@ public class UpdateImgController {
if(uploadConfig.getImgcounttourists()!=null){imgcounttourists = uploadConfig.getImgcounttourists();}
if(uploadConfig.getImgcountuser()!=null){imgcountuser = uploadConfig.getImgcountuser();}
//Boolean b =false;
- Keys key = null;
- Integer Sourcekey = GetCurrentSource.GetSource(u==null?null:u.getId());
- if(Sourcekey!=0 && Sourcekey!=5){
- key= keysService.selectKeys(Sourcekey);//然后根据类型再查询key
- //b = StringUtils.doNull(key);//判断对象是否有空值
- if(key.getStorageType()!=0 && key.getStorageType()!=null){
- int ret =0;
- if(key.getStorageType()==1){
- ret =nOSImageupload.Initialize(key);//实例化网易
- }else if (key.getStorageType()==2){
- ret =OSSImageupload.Initialize(key);
- }else if(key.getStorageType()==3){
- ret = USSImageupload.Initialize(key);
- }else if(key.getStorageType()==4){
- ret = KODOImageupload.Initialize(key);
- }else if(key.getStorageType()==6){
- ret = COSImageupload.Initialize(key);
- }else if(key.getStorageType()==7){
- ret = FTPImageupload.Initialize(key);
- }
- else{
- Print.Normal("为获取到存储参数,或者使用存储源是本地的。");
- }
- if(ret<1){model.addAttribute("error", "当前存储源参数配置不完整,请联系管理员配置存储源。");}
- else{model.addAttribute("error", 1);}
- }
- }
+ //Integer Sourcekey = GetCurrentSource.GetSource(u==null?null:u.getId());//查询当当前用户或者游客使用的数据源
if (email != null) {
//登陆成功
Integer ret = userService.login(u.getEmail(), u.getPassword());
@@ -140,14 +114,12 @@ public class UpdateImgController {
, @RequestParam(value = "file", required = false) MultipartFile[] file) throws Exception {
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
- Config config = configService.getSourceype();//查询当前系统使用的存储源类型。
+ Config config = configService.getSourceype();
UploadConfig uploadConfig = uploadConfigService.getUpdateConfig();
User u = (User) session.getAttribute("user");
Integer usermemory =0;
Integer memory =0;
Integer Sourcekey=0;
- //User tmpuser = userService.getUsers(u.getEmail());
- //GetCurrentSource getCurrentSource = new GetCurrentSource();
if(u==null){
Sourcekey = GetCurrentSource.GetSource(null);
memory = uploadConfig.getVisitormemory();
@@ -526,15 +498,6 @@ public class UpdateImgController {
return jsonObject.toString();
}
- @RequestMapping(value = "/getsentence")
- @ResponseBody
- public String getsentence(HttpSession session) {
- JSONObject jsonObject = new JSONObject();
- String yiyan = Sentence.getURLContent();
-
- return yiyan;
- }
-
@RequestMapping("/err")
public String err() {
diff --git a/src/main/java/cn/hellohao/controller/UserController.java b/src/main/java/cn/hellohao/controller/UserController.java
index ca7b302..669e932 100644
--- a/src/main/java/cn/hellohao/controller/UserController.java
+++ b/src/main/java/cn/hellohao/controller/UserController.java
@@ -3,6 +3,7 @@ package cn.hellohao.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
+import java.util.Random;
import java.util.UUID;
import javax.mail.internet.MimeMessage;
@@ -12,6 +13,8 @@ import javax.validation.Valid;
import cn.hellohao.pojo.*;
import cn.hellohao.service.*;
+import cn.hellohao.utils.Base64Encryption;
+import cn.hellohao.utils.Print;
import cn.hellohao.utils.SendEmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -44,86 +47,97 @@ public class UserController {
@RequestMapping("/register")
@ResponseBody
- public String Register(@Valid User user) {
- //取当前时间
- UploadConfig updateConfig = uploadConfigService.getUpdateConfig();
+ public String Register(@Valid User u,Integer zctmp) {
JSONObject jsonObject = new JSONObject();
- EmailConfig emailConfig = emailConfigService.getemail();
- Integer countusername = userService.countusername(user.getUsername());
- Integer countmail = userService.countmail(user.getEmail());
- SysConfig sysConfig = sysConfigService.getstate();
- if(sysConfig.getRegister()==1){
- if (countusername == 0 && countmail == 0) {
- String uid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
- String birthder = df.format(new Date());// new Date()为获取当前系统时间
- user.setLevel(1);
- user.setUid(uid);
- user.setBirthder(birthder);
- user.setMemory(updateConfig.getUsermemory());
- user.setGroupid(1);
- //查询是否启用了邮箱验证。
- Config config = configService.getSourceype();
- System.err.println("是否启用了邮箱激活:"+emailConfig.getUsing());
- Integer type = 0;
- if(emailConfig.getUsing()==1){
- user.setIsok(0);
- //初始化邮箱
- MimeMessage message = SendEmail.Emails(emailConfig);
- //注册完发激活链接
- Thread thread = new Thread() {
- public void run() {
- Integer a = SendEmail.sendEmail(message, user.getUsername(), uid, user.getEmail(),emailConfig,config);
- }
- };
- thread.start();
- type = 1;
- }else{
- //直接注册
- user.setIsok(1);
- type = 2;
- }
- Integer ret = userService.register(user);
- if(ret>0){
+ if((zctmp-number2)==(istmp2-number2)){
+ //取当前时间
+ User user = new User();
+ UploadConfig updateConfig = uploadConfigService.getUpdateConfig();
+ EmailConfig emailConfig = emailConfigService.getemail();
+ Integer countusername = userService.countusername(u.getUsername());
+ Integer countmail = userService.countmail(u.getEmail());
+ SysConfig sysConfig = sysConfigService.getstate();
+ if(sysConfig.getRegister()==1){
+ if (countusername == 0 && countmail == 0) {
+ String uid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
+ String birthder = df.format(new Date());// new Date()为获取当前系统时间
+ user.setLevel(1);
+ user.setUid(uid);
+ user.setBirthder(birthder);
+ user.setMemory(updateConfig.getUsermemory());
+ user.setGroupid(1);
+ user.setEmail(u.getEmail());
+ user.setUsername(u.getUsername());
+ user.setPassword(Base64Encryption.encryptBASE64(u.getPassword().getBytes()));
+ //查询是否启用了邮箱验证。
+ Config config = configService.getSourceype();
+ System.err.println("是否启用了邮箱激活:"+emailConfig.getUsing());
+ Integer type = 0;
+ if(emailConfig.getUsing()==1){
+ user.setIsok(0);
+ //初始化邮箱
+ MimeMessage message = SendEmail.Emails(emailConfig);
+ //注册完发激活链接
+ Thread thread = new Thread() {
+ public void run() {
+ Integer a = SendEmail.sendEmail(message, user.getUsername(), uid, user.getEmail(),emailConfig,config);
+ }
+ };
+ thread.start();
+ type = 1;
+ }else{
+ //直接注册
+ user.setIsok(1);
+ type = 2;
+ }
+ Integer ret = userService.register(user);
+ if(ret>0){
// UserGroup userGroup = new UserGroup();
// User user1 = userService.getUsersMail(uid);
// userGroup.setUserid(user1.getId());
// userGroup.setGroupid(1);
// userGroupService.addusergroup(userGroup);
+ }
+ jsonObject.put("ret",ret);
+ jsonObject.put("zctype",type);
+ } else {
+ jsonObject.put("ret",-2);
}
- jsonObject.put("ret",ret);
- jsonObject.put("zctype",type);
- } else {
- jsonObject.put("ret",-2);
+ }else{
+ jsonObject.put("ret",-3); //管理员关闭的注册
}
}else{
- jsonObject.put("ret",-3); //管理员关闭的注册
+ jsonObject.put("ret",-4);//非法注册
}
return jsonObject.toString();
}
- @RequestMapping("/login.do")
+ @RequestMapping("/login")
@ResponseBody
- public String login( HttpSession httpSession, String email, String password) {
+ public String login( HttpSession httpSession, String email, String password,Integer logotmp) {
JSONArray jsonArray = new JSONArray();
-
- Integer ret = userService.login(email, password);
- if (ret > 0) {
- User user = userService.getUsers(email);
- if (user.getIsok() == 1) {
- httpSession.setAttribute("user", user);
- httpSession.setAttribute("email", user.getEmail());
- httpSession.setAttribute("pass", user.getPassword());
- jsonArray.add(1);
- } else if(ret==-1){
- jsonArray.add(-1);
- }else {
- jsonArray.add(-2);
+ if((logotmp-number1)==(istmp1-number1)){
+ String basepass = Base64Encryption.encryptBASE64(password.getBytes());
+ Integer ret = userService.login(email, basepass);
+ if (ret > 0) {
+ User user = userService.getUsers(email);
+ if (user.getIsok() == 1) {
+ httpSession.setAttribute("user", user);
+ httpSession.setAttribute("email", user.getEmail());
+ jsonArray.add(1);
+ } else if(ret==-1){
+ jsonArray.add(-1);
+ }else {
+ jsonArray.add(-2);
+ }
+ } else {
+ jsonArray.add(0);
}
- } else {
- jsonArray.add(0);
+ }else{jsonArray.add(-3);//非法登录
}
+
return jsonArray.toString();
}
@@ -166,5 +180,26 @@ public class UserController {
}
}
+ @PostMapping(value = "/verification")
+ @ResponseBody
+ public Integer verification(HttpSession session,Integer tmp,Integer type) {
+ Random random = new Random();
+ if(type==1){
+ number1 = random.nextInt(100);
+ istmp1 = tmp;
+ Print.Normal(tmp-number1);
+ }
+ if(type==2){
+ number2 = random.nextInt(100);
+ istmp2 = tmp;
+ Print.Normal(tmp-number2);
+ }
+ return 1;
+ }
+
+ private Integer number1;
+ private Integer istmp1;
+ private Integer number2;
+ private Integer istmp2;
}
diff --git a/src/main/java/cn/hellohao/dao/KeysMapper.java b/src/main/java/cn/hellohao/dao/KeysMapper.java
index 64df6c6..d1509d1 100644
--- a/src/main/java/cn/hellohao/dao/KeysMapper.java
+++ b/src/main/java/cn/hellohao/dao/KeysMapper.java
@@ -5,11 +5,14 @@ import org.apache.ibatis.annotations.Param;
import cn.hellohao.pojo.Keys;
+import java.util.List;
+
@Mapper
public interface KeysMapper {
//查询密钥
Keys selectKeys(@Param("storageType") Integer storageType);
//修改key
Integer updateKey(Keys key);
+ List getKeys();
}
diff --git a/src/main/java/cn/hellohao/dao/UserMapper.java b/src/main/java/cn/hellohao/dao/UserMapper.java
index e61777f..ed4023e 100644
--- a/src/main/java/cn/hellohao/dao/UserMapper.java
+++ b/src/main/java/cn/hellohao/dao/UserMapper.java
@@ -45,7 +45,6 @@ public interface UserMapper {
User getUsersMail(@Param("uid") String uid);
Integer setisok (User user);
- Integer setisok (User user);
Integer setmemory(User user);
User getUsersid(@Param("id") Integer id);
diff --git a/src/main/java/cn/hellohao/service/KeysService.java b/src/main/java/cn/hellohao/service/KeysService.java
index c73433f..540e390 100644
--- a/src/main/java/cn/hellohao/service/KeysService.java
+++ b/src/main/java/cn/hellohao/service/KeysService.java
@@ -3,11 +3,13 @@ package cn.hellohao.service;
import cn.hellohao.pojo.Keys;
+import java.util.List;
+
public interface KeysService {
//查询密钥
Keys selectKeys(Integer storageType);
//修改key
Integer updateKey(Keys key);
-
+ List getKeys();
}
diff --git a/src/main/java/cn/hellohao/service/impl/FTPImageupload.java b/src/main/java/cn/hellohao/service/impl/FTPImageupload.java
index aae42dc..696f7ae 100644
--- a/src/main/java/cn/hellohao/service/impl/FTPImageupload.java
+++ b/src/main/java/cn/hellohao/service/impl/FTPImageupload.java
@@ -134,10 +134,10 @@ public class FTPImageupload {
}catch (IOException e){
System.out.println(e);
}
- Print.warning("连接失败");
+ //Print.warning("连接失败");
ret = -1;
}
- Print.Normal("链接成功");
+ //Print.Normal("链接成功");
//boolean isUpload = ftp.storeFile("/ftp/upload.jpg", fis);
ftpClient1 = ftp;
key = k;
diff --git a/src/main/java/cn/hellohao/service/impl/InitializationStorage.java b/src/main/java/cn/hellohao/service/impl/InitializationStorage.java
new file mode 100644
index 0000000..99a990f
--- /dev/null
+++ b/src/main/java/cn/hellohao/service/impl/InitializationStorage.java
@@ -0,0 +1,65 @@
+package cn.hellohao.service.impl;
+
+import cn.hellohao.dao.KeysMapper;
+import cn.hellohao.pojo.Keys;
+import cn.hellohao.utils.Print;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author Hellohao
+ * @version 1.0
+ * @date 2019/8/28 15:33
+ */
+
+@Component
+@Order(2) //通过order值的大小来决定启动的顺序
+public class InitializationStorage implements CommandLineRunner {
+ @Autowired
+ private KeysMapper keysMapper;
+
+ @Override
+ public void run(String... args) throws Exception {
+ intiStorage();
+ sout();
+ }
+ public void intiStorage(){
+ List keylist = keysMapper.getKeys();
+ for (Keys key : keylist) {
+ if(key.getStorageType()!=0 && key.getStorageType()!=null){
+ int ret =0;
+ if(key.getStorageType()==1){
+ ret =NOSImageupload.Initialize(key);//实例化网易
+ }else if (key.getStorageType()==2){
+ ret =OSSImageupload.Initialize(key);
+ }else if(key.getStorageType()==3){
+ ret = USSImageupload.Initialize(key);
+ }else if(key.getStorageType()==4){
+ ret = KODOImageupload.Initialize(key);
+ }else if(key.getStorageType()==6){
+ ret = COSImageupload.Initialize(key);
+ }else if(key.getStorageType()==7){
+ ret = FTPImageupload.Initialize(key);
+ }
+ else{
+ //Print.warning("未获取到存储参数,或者使用存储源是本地的。");
+ }
+// if(ret<1){model.addAttribute("error", "当前存储源参数配置不完整,请联系管理员配置存储源。");}
+// else{model.addAttribute("error", 1);}
+ }
+ }
+Print.Normal("初始化完成");
+ }
+
+ public void sout(){
+ Print.Normal("______________________________________________");
+ Print.Normal(" Hellohao-Pro ");
+ Print.Normal(" Successful startup of the program ");
+ Print.Normal(" is OK! Open http://your ip:port ");
+ Print.Normal("______________________________________________");
+ }
+}
diff --git a/src/main/java/cn/hellohao/service/impl/KeysServiceImpl.java b/src/main/java/cn/hellohao/service/impl/KeysServiceImpl.java
index 2a2ee91..1da5ee7 100644
--- a/src/main/java/cn/hellohao/service/impl/KeysServiceImpl.java
+++ b/src/main/java/cn/hellohao/service/impl/KeysServiceImpl.java
@@ -7,6 +7,8 @@ import cn.hellohao.dao.KeysMapper;
import cn.hellohao.pojo.Keys;
import cn.hellohao.service.KeysService;
+import java.util.List;
+
@Service
public class KeysServiceImpl implements KeysService {
@@ -26,4 +28,9 @@ public class KeysServiceImpl implements KeysService {
return keysMapper.updateKey(key);
}
+ @Override
+ public List getKeys() {
+ return null;
+ }
+
}
diff --git a/src/main/java/cn/hellohao/test/test1.java b/src/main/java/cn/hellohao/test/test1.java
index 63cf554..de3e24c 100644
--- a/src/main/java/cn/hellohao/test/test1.java
+++ b/src/main/java/cn/hellohao/test/test1.java
@@ -6,88 +6,71 @@ import cn.hutool.crypto.SecureUtil;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
+import java.io.*;
import java.security.SecureRandom;
import java.util.Date;
public class test1 {
-
-// private static final String KEY = "myMw6qPt&3AD";
- private static final String KEY = "myMw6qPt&3GHSE";
-
- public static void main(String[] args) throws Exception {
- java.text.DateFormat format1 = new java.text.SimpleDateFormat("MMddhhmmss");
- String times = format1.format(new Date());
- //待加密字段
- String source = times+"201908111340402000";
- //加密
- String result = enCryptAndEncode(source);
- Print.warning(result);
- //解密
- String source_2 = deCryptAndDecode(result);
- Print.warning(source_2);
- System.out.println("判断是否相等:"+source.equals(source_2));
- System.out.println(SecureUtil.md5("200"));
- //System.out.println(SecureUtil.sha256("201908111340402000"));
-
+ public static void main(String[] args) throws Exception {
+ readFile(File.separator + "HellohaoData"+File.separator+"db.db");
+ //charu();
}
-
- public static String enCryptAndEncode(String content) {
+ public static void charu() {
+ String filePath =File.separator + "HellohaoData" ;
+ File file = new File(filePath);
+ File file1 = new File(filePath+File.separator+"db.db");
+ if(!file.exists()){
+ file.mkdirs();
+ }
+ if(!file1.exists()){
+ try {
+ file1.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ FileWriter fw = null;
try {
- byte[] sourceBytes = enCryptAndEncode(content, KEY);
- return Base64.encodeBase64URLSafeString(sourceBytes);
- } catch (Exception e) {
- return content;
+ //如果文件存在,则追加内容;如果文件不存在,则创建文件
+ fw = new FileWriter(file1, true);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ PrintWriter pw = new PrintWriter(fw);
+ pw.println("666666");
+ pw.flush();
+ try {
+ fw.flush();
+ pw.close();
+ fw.close();
+ } catch (IOException e) {
+ e.printStackTrace();
}
}
- /**
- * 加密函数
- *
- * @param content 加密的内容
- * @param strKey 密钥
- * @return 返回二进制字符数组
- * @throws Exception
- */
- public static byte[] enCryptAndEncode(String content, String strKey) throws Exception {
- KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
- keyGenerator.init(128, new SecureRandom(strKey.getBytes()));
-
- SecretKey desKey = keyGenerator.generateKey();
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.ENCRYPT_MODE, desKey);
- return cipher.doFinal(content.getBytes("UTF-8"));
+ // 读取文件内容
+ public static String readFile(String path) {//路径
+ File file = new File(path);
+ StringBuilder result = new StringBuilder();
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));//构造一个BufferedReader类来读取文件
+ String s = null;
+ while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
+ result.append(System.lineSeparator() + s);
+ Print.Normal( s);
+ }
+ br.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result.toString();
}
- public static String deCryptAndDecode(String content) throws Exception {
- byte[] targetBytes = Base64.decodeBase64(content);
- return deCryptAndDecode(targetBytes, KEY);
- }
-
-
- /**
- * 解密函数
- *
- * @param src 加密过的二进制字符数组
- * @param strKey 密钥
- * @return
- * @throws Exception
- */
- public static String deCryptAndDecode(byte[] src, String strKey) throws Exception {
- KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
- keyGenerator.init(128, new SecureRandom(strKey.getBytes()));
-
- SecretKey desKey = keyGenerator.generateKey();
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.DECRYPT_MODE, desKey);
- byte[] cByte = cipher.doFinal(src);
- return new String(cByte, "UTF-8");
- }
-
-
}
diff --git a/src/main/java/cn/hellohao/utils/AfterServiceStarted.java b/src/main/java/cn/hellohao/utils/AfterServiceStarted.java
index 0a8e237..fa6445b 100644
--- a/src/main/java/cn/hellohao/utils/AfterServiceStarted.java
+++ b/src/main/java/cn/hellohao/utils/AfterServiceStarted.java
@@ -14,11 +14,11 @@ public class AfterServiceStarted implements ApplicationRunner {
*/
@Override
public void run(ApplicationArguments args) throws Exception {
- Print.Normal("================================================");
- Print.Normal("|| Hellohao-Pro图床启动成功 ||");
- Print.Normal("|| 作者博客:Http://www.hellohao.cn ||");
- Print.Normal("|| 也许这将是最好用的图床 ||");
- Print.Normal("=================================================");
+// Print.Normal("______________________________________________");
+// Print.Normal(" Hellohao-Pro ");
+// Print.Normal(" Successful startup of the program ");
+// Print.Normal(" is OK! Open http://your ip:port ");
+// Print.Normal("______________________________________________");
//getLinuxLocalIp();
}
diff --git a/src/main/java/cn/hellohao/utils/Base64Encryption.java b/src/main/java/cn/hellohao/utils/Base64Encryption.java
new file mode 100644
index 0000000..11ab955
--- /dev/null
+++ b/src/main/java/cn/hellohao/utils/Base64Encryption.java
@@ -0,0 +1,50 @@
+package cn.hellohao.utils;
+
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import java.io.IOException;
+import java.util.Base64;
+
+/**
+ * Created by Hellohao on 2019-08-27.
+ */
+public class Base64Encryption {
+
+ public static void main(String[] args) {
+ toBaseCode("admin");
+ }
+ /**
+ * BASE64加密解密
+ */
+ public static void toBaseCode(String str) {
+ String data = encryptBASE64(str.getBytes());
+ System.out.println("sun.misc.BASE64 加密后:" + data);
+ System.out.println("sun.misc.BASE64 解密后:" + decryptBASE64(data));
+ }
+
+ /**
+ * BASE64解密
+ * @throws Exception
+ */
+ public static String decryptBASE64(String key) {
+ byte[] b =null;
+ try {
+ b = (new BASE64Decoder()).decodeBuffer(key);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return new String(b);
+ }
+
+ /**
+ * BASE64加密
+ */
+ public static String encryptBASE64(byte[] key) {
+
+ String string = "SGVsbG9oYW8K";
+ System.out.println(string.replaceAll("\r|\n",""));
+
+ return (new BASE64Encoder()).encodeBuffer(key).replaceAll("\r|\n", "");
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 297bbdb..b13d1ba 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,5 +1,5 @@
#ݿ˺
-spring.datasource.username=picturebed
+spring.datasource.username=root
#ݿtest
spring.datasource.password=root
#ݿӵַ
@@ -24,7 +24,7 @@ multipart.maxFileSize=10240KB
multipart.maxRequestSize=10240KB
spring.thymeleaf.mode = LEGACYHTML5
spring.http.multipart.location=/data/upload_tmp
-systemupdate=2019-08-25
+systemupdate=2019-08-29
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
index 804bbef..7657e70 100644
--- a/src/main/resources/banner.txt
+++ b/src/main/resources/banner.txt
@@ -4,6 +4,8 @@
/ __ / __/ | | (_) | | | | (_| | (_) |
\/ /_/ \___|_|_|\___/|_| |_|\__,_|\___/
- ————————————————————————————————————
- Hellohao博客:http://www.hellohao.cn
- ————————————————————————————————————
\ No newline at end of file
+__________________________________________
+ HellohaoBlog:http://www.hellohao.cn
+__________________________________________
+
+//
\ No newline at end of file
diff --git a/src/main/resources/db/test.txt b/src/main/resources/db/test.txt
new file mode 100644
index 0000000..d75b77f
--- /dev/null
+++ b/src/main/resources/db/test.txt
@@ -0,0 +1 @@
+66666666666666666
\ No newline at end of file
diff --git a/src/main/resources/mapper/KeysMapper.xml b/src/main/resources/mapper/KeysMapper.xml
index dbaca4e..5419708 100644
--- a/src/main/resources/mapper/KeysMapper.xml
+++ b/src/main/resources/mapper/KeysMapper.xml
@@ -6,11 +6,19 @@
+
+
+
diff --git a/src/main/resources/static/css/font-awesome.min.css b/src/main/resources/static/css/font-awesome.min.css
index 327aaa9..d2a18cf 100644
--- a/src/main/resources/static/css/font-awesome.min.css
+++ b/src/main/resources/static/css/font-awesome.min.css
@@ -1,4 +1,4 @@
/*!
* Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont93e3.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../static/fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont93e3.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}
diff --git a/src/main/resources/static/css/verify.css b/src/main/resources/static/css/verify.css
new file mode 100644
index 0000000..8a81218
--- /dev/null
+++ b/src/main/resources/static/css/verify.css
@@ -0,0 +1,170 @@
+/*常规验证码*/
+.verify-code {
+ font-size: 20px;
+ text-align: center;
+ cursor: pointer;
+ margin-bottom: 5px;
+ border: 1px solid #ddd;
+}
+
+.cerify-code-panel {
+ height:100%;
+ overflow:hidden;
+}
+
+.verify-code-area {
+ float:left;
+}
+
+.verify-input-area {
+ float: left;
+ width: 60%;
+ padding-right: 10px;
+
+}
+
+.verify-change-area {
+ line-height: 30px;
+ float: left;
+}
+
+.varify-input-code {
+ display:inline-block;
+ width: 100%;
+ height: 25px;
+}
+
+.verify-change-code {
+ color: #337AB7;
+ cursor: pointer;
+}
+
+.verify-btn {
+ width: 200px;
+ height: 30px;
+ background-color: #337AB7;
+ color:#FFFFFF;
+ border:none;
+ margin-top: 10px;
+}
+
+
+
+
+
+
+/*滑动验证码*/
+.verify-bar-area {
+ position: relative;
+ background: #FFFFFF;
+ text-align: center;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+}
+
+.verify-bar-area .verify-move-block {
+ position: absolute;
+ top: 0px;
+ left: 0;
+ background: #fff;
+ cursor: pointer;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ box-shadow: 0 0 2px #888888;
+ -webkit-border-radius: 1px;
+}
+
+.verify-bar-area .verify-move-block:hover {
+ background-color: #337ab7;
+ color: #FFFFFF;
+}
+
+.verify-bar-area .verify-left-bar {
+ position: absolute;
+ top: -1px;
+ left: -1px;
+ background: #f0fff0;
+ cursor: pointer;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #ddd;
+}
+
+.verify-img-panel {
+ margin:0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ position: relative;
+}
+
+.verify-img-panel .verify-refresh {
+ width: 25px;
+ height: 25px;
+ text-align:center;
+ padding: 5px;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+}
+
+.verify-img-panel .icon-refresh {
+ font-size: 20px;
+ color: #fff;
+}
+
+.verify-img-panel .verify-gap {
+ background-color: #fff;
+ position: relative;
+ z-index: 2;
+ border:1px solid #fff;
+}
+
+.verify-bar-area .verify-move-block .verify-sub-block {
+ position: absolute;
+ text-align: center;
+ z-index: 3;
+ border: 1px solid #fff;
+}
+
+.verify-bar-area .verify-move-block .verify-icon {
+ font-size: 18px;
+}
+
+.verify-bar-area .verify-msg {
+ z-index : 3;
+}
+
+/*字体图标的css*/
+@font-face {font-family: "iconfont";
+ src: url('../fonts/iconfont.eot?t=1508229193188'); /* IE9*/
+ src: url('../fonts/iconfont.eot?t=1508229193188#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAaAAAsAAAAACUwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kiSY21hcAAAAYAAAAB3AAABuM+qBlRnbHlmAAAB+AAAAnQAAALYnrUwT2hlYWQAAARsAAAALwAAADYPNwajaGhlYQAABJwAAAAcAAAAJAfeA4dobXR4AAAEuAAAABMAAAAYF+kAAGxvY2EAAATMAAAADgAAAA4CvAGsbWF4cAAABNwAAAAfAAAAIAEVAF1uYW1lAAAE/AAAAUUAAAJtPlT+fXBvc3QAAAZEAAAAPAAAAE3oPPXPeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sM4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDxbwtzwv4EhhrmBoQEozAiSAwAw1A0UeJzFkcENgCAMRX8RjCGO4gTe9eQcnhzAfXC2rqG/hYsT8MmD9gdS0gJIAAaykAjIBYHppCvuD8juR6zMJ67A89Zdn/f1aNPikUn8RvYo8G20CjKim6Rf6b9m34+WWd/vBr+oW8V6q3vF5qKlYrPRp4L0Ad5nGL8AeJxFUc9rE0EYnTezu8lMsrvtbrqb3TRt0rS7bdOmdI0JbWmCtiItIv5oi14qevCk9SQVLFiQgqAF8Q9QLKIHLx48FkHo3ZNnFUXwD5C2B6dO6sFhmI83w7z3fe8RnZCjb2yX5YlLhskkmScXCIFRxYBFiyjH9Rqtoqes9/g5i8WVuJyqDNTYLPwBI+cljXrkGynDhoU+nCgnjbhGY5yst+gMEq8IBIXwsjPU67CnEPm4b0su0h309Fd67da4XBhr55KSm17POk7gOE/Shq6nKdVsC7d9j+tcGPKVboc9u/0jtB/ZIA7PXTVLBef6o/paccjnwOYm3ELJetPuDrvV3gg91wlSXWY6H5qVwRzWf2TybrYYfSdqoXOwh/Qa8RWIjBTiSI3h614/vKSNRhONOrsnQi6Xf4nQFQDTmJE1NKbhI6crHEJO/+S5QPxhYJRRyvBFBP+5T9EPpEAIVzzRQIrjmJ6jY1WTo+NXTMchuBsKuS8PRZATSMl9oTA4uNLkeIA0V1UeqOoGQh7IAxGo+7T83fn3T+voqCNPPAUazUYUI7LgKSV1Jk2oUeghYGhZ+cKOe2FjVu5ZKEY2VkE13AK1+jI4r1KLbPlZfrKiPhOXKPRj7q9sj9XJ7LFHNmrKJS3VCdhXGSdKrtmoQaWeMjQVt0KD6sGPOx0oH2fgtzoNROxtNq8F3tzYM/n+TjKSX5qf2jx941276TIr9FjXxKr8eX/6bK4yuopwo9py1sw8F9kdw4AmurRpLUM3tYx5ZnKpfHPi8dzz19vJ6MjyxYUrpqeb1uLs3eGV6vr21pSqpeWkqonAN9oUyIiXpv8XvlN5e3icY2BkYGAA4n0vN4fG89t8ZeBmYQCBa9wPPRH0/wcsDMwmQC4HAxNIFABAfAqaAHicY2BkYGBu+N/AEMPCAAJAkpEBFbABAEcMAm94nGNhYGBgfsnAwMKAigESnwEBAAAAAAAAdgCkANoBCAFsAAB4nGNgZGBgYGMIZGBlAAEmIOYCQgaG/2A+AwARSAFzAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nGNgYoAALgbsgI2RiZGZkYWRlZGNkZ2BsYI1OSM1OZs1OSe/OJW1KDM9o4S9KDWtKLU4g4EBAJ79CeQ=') format('woff'),
+ url('../fonts/iconfont.ttf?t=1508229193188') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('../fonts/iconfont.svg?t=1508229193188#iconfont') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+ font-family:"iconfont" !important;
+ font-size:16px;
+ font-style:normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-check:before { content: "\e645"; }
+
+.icon-close:before { content: "\e646"; }
+
+.icon-right:before { content: "\e6a3"; }
+
+.icon-refresh:before { content: "\e6a4"; }
diff --git a/src/main/resources/static/fonts/FontAwesome.otf b/src/main/resources/static/fonts/FontAwesome.otf
deleted file mode 100644
index 681bdd4..0000000
Binary files a/src/main/resources/static/fonts/FontAwesome.otf and /dev/null differ
diff --git a/src/main/resources/static/fonts/fontawesome-webfont.eot b/src/main/resources/static/fonts/fontawesome-webfont.eot
deleted file mode 100644
index a30335d..0000000
Binary files a/src/main/resources/static/fonts/fontawesome-webfont.eot and /dev/null differ
diff --git a/src/main/resources/static/fonts/fontawesome-webfont.svg b/src/main/resources/static/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 6fd19ab..0000000
--- a/src/main/resources/static/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,640 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/static/fonts/fontawesome-webfont.ttf b/src/main/resources/static/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index d7994e1..0000000
Binary files a/src/main/resources/static/fonts/fontawesome-webfont.ttf and /dev/null differ
diff --git a/src/main/resources/static/fonts/fontawesome-webfont.woff b/src/main/resources/static/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 6fd4ede..0000000
Binary files a/src/main/resources/static/fonts/fontawesome-webfont.woff and /dev/null differ
diff --git a/src/main/resources/static/fonts/fontawesome-webfont93e3.svg b/src/main/resources/static/fonts/fontawesome-webfont93e3.svg
deleted file mode 100644
index 6fd19ab..0000000
--- a/src/main/resources/static/fonts/fontawesome-webfont93e3.svg
+++ /dev/null
@@ -1,640 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/static/images/5f180dc8c56a4232b3a9cdc5a49cbe61.bmp b/src/main/resources/static/images/5f180dc8c56a4232b3a9cdc5a49cbe61.bmp
deleted file mode 100644
index 2525f95..0000000
Binary files a/src/main/resources/static/images/5f180dc8c56a4232b3a9cdc5a49cbe61.bmp and /dev/null differ
diff --git a/src/main/resources/static/img/background/2.jpg b/src/main/resources/static/img/background/2.jpg
deleted file mode 100644
index 7b176ab..0000000
Binary files a/src/main/resources/static/img/background/2.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/3.jpg b/src/main/resources/static/img/background/3.jpg
deleted file mode 100644
index e3f5f67..0000000
Binary files a/src/main/resources/static/img/background/3.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/4.jpg b/src/main/resources/static/img/background/4.jpg
deleted file mode 100644
index 885217d..0000000
Binary files a/src/main/resources/static/img/background/4.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/5.jpg b/src/main/resources/static/img/background/5.jpg
deleted file mode 100644
index c0724e7..0000000
Binary files a/src/main/resources/static/img/background/5.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/sample2.jpg b/src/main/resources/static/img/background/sample2.jpg
deleted file mode 100644
index 5be644e..0000000
Binary files a/src/main/resources/static/img/background/sample2.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/sample4.jpg b/src/main/resources/static/img/background/sample4.jpg
deleted file mode 100644
index ea7f7dc..0000000
Binary files a/src/main/resources/static/img/background/sample4.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/sample5.jpg b/src/main/resources/static/img/background/sample5.jpg
deleted file mode 100644
index 40aacfb..0000000
Binary files a/src/main/resources/static/img/background/sample5.jpg and /dev/null differ
diff --git a/src/main/resources/static/img/background/sample8.jpg b/src/main/resources/static/img/background/sample8.jpg
deleted file mode 100644
index 74a34d3..0000000
Binary files a/src/main/resources/static/img/background/sample8.jpg and /dev/null differ
diff --git a/src/main/resources/static/js/verify.js b/src/main/resources/static/js/verify.js
new file mode 100644
index 0000000..b0de515
--- /dev/null
+++ b/src/main/resources/static/js/verify.js
@@ -0,0 +1,739 @@
+/*! Verify-v0.1.0 MIT License by 大熊*/
+
+
+;(function($, window, document,undefined) {
+
+ //定义Code的构造函数
+ var Code = function(ele, opt) {
+ this.$element = ele,
+ this.defaults = {
+ type : 1,
+ figure : 100, //位数,仅在type=2时生效
+ arith : 0, //算法,支持加减乘,0为随机,仅在type=2时生效
+ width : '200px',
+ height : '60px',
+ fontSize : '30px',
+ codeLength : 6,
+ btnId : 'check-btn',
+ ready : function(){},
+ success : function(){},
+ error : function(){}
+ },
+ this.options = $.extend({}, this.defaults, opt)
+ };
+
+ var _code_chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
+ var _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0'];
+ var _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC'];
+
+ //定义Code的方法
+ Code.prototype = {
+ init : function() {
+
+ var _this = this;
+
+ this.loadDom();
+ this.setCode();
+
+ this.options.ready();
+
+ this.$element[0].onselectstart = document.body.ondrag = function(){
+ return false;
+ };
+
+ //点击验证码
+ this.$element.find('.verify-code, .verify-change-code').on('click', function() {
+ _this.setCode();
+ });
+
+ //确定的点击事件
+ this.htmlDoms.code_btn.on('click', function() {
+ _this.checkCode();
+ })
+
+ },
+
+ //加载页面
+ loadDom : function() {
+ var panelHtml = '';
+ this.$element.append(panelHtml);
+
+ this.htmlDoms = {
+ code_btn : $('#'+this.options.btnId),
+ code : this.$element.find('.verify-code'),
+ code_area : this.$element.find('.verify-code-area'),
+ code_input : this.$element.find('.varify-input-code'),
+ };
+
+ this.htmlDoms.code.css({'width':this.options.width, 'height':this.options.height,'line-height':this.options.height, 'font-size':this.options.fontSize});
+ this.htmlDoms.code_area.css({'width':this.options.width});
+ },
+
+
+ //设置验证码
+ setCode : function() {
+
+ var color1Num = Math.floor(Math.random() * 3);
+ var color2Num = Math.floor(Math.random() * 5);
+
+ this.htmlDoms.code.css({'background-color': _code_color1[color1Num], 'color': _code_color2[color2Num]});
+ this.htmlDoms.code_input.val('');
+
+ var code = '';
+ this.code_chose = '';
+
+ if(this.options.type == 1) { //普通验证码
+ for(var i = 0; i < this.options.codeLength; i++) {
+ var charNum = Math.floor(Math.random() * 52);
+ var tmpStyle = (charNum%2 ==0)? "font-style:italic;margin-right: 10px;":"font-weight:bolder;";
+ tmpStyle += (Math.floor(Math.random() * 2) == 1)? "font-weight:bolder;":"";
+
+ this.code_chose += _code_chars[charNum];
+ code += ''+_code_chars[charNum]+'';
+ }
+ }else { //算法验证码
+
+ var num1 = Math.floor(Math.random() * this.options.figure);
+ var num2 = Math.floor(Math.random() * this.options.figure);
+
+ if(this.options.arith == 0) {
+ var tmparith = Math.floor(Math.random() * 3);
+ }
+
+ switch(tmparith) {
+ case 1 :
+ this.code_chose = parseInt(num1) + parseInt(num2);
+ code = num1 + ' + ' + num2 + ' = ?';
+ break;
+ case 2 :
+ if(parseInt(num1) < parseInt(num2)) {
+ var tmpnum = num1;
+ num1 = num2;
+ num2 = tmpnum;
+ }
+ this.code_chose = parseInt(num1) - parseInt(num2);
+ code = num1 + ' - ' + num2 + ' = ?';
+ break;
+ default :
+ this.code_chose = parseInt(num1) * parseInt(num2);
+ code = num1 + ' × ' + num2 + ' = ?';
+ break;
+ }
+ }
+
+ this.htmlDoms.code.html(code);
+
+ },
+
+ //比对验证码
+ checkCode : function() {
+ if(this.options.type == 1) { //普通验证码
+ var own_input = this.htmlDoms.code_input.val().toUpperCase();
+ this.code_chose = this.code_chose.toUpperCase();
+ }else {
+ var own_input = this.htmlDoms.code_input.val();
+ }
+
+ if(own_input == this.code_chose) {
+ this.options.success();
+ }else {
+ this.options.error();
+ this.setCode();
+ }
+ }
+ };
+
+
+ //定义Slide的构造函数
+ var Slide = function(ele, opt) {
+ this.$element = ele,
+ this.defaults = {
+
+ type : 1,
+ vOffset: 5,
+ vSpace : 5,
+ imgName : ['1.jpg', '2.jpg'],
+ imgSize : {
+ width: '400px',
+ height: '200px',
+ },
+ blockSize : {
+ width: '50px',
+ height: '50px',
+ },
+ barSize : {
+ width : '400px',
+ height : '40px',
+ },
+ ready : function(){},
+ success : function(){},
+ error : function(){}
+
+ },
+ this.options = $.extend({}, this.defaults, opt)
+ };
+
+
+ //定义Slide的方法
+ Slide.prototype = {
+
+ init: function() {
+ var _this = this;
+
+ //加载页面
+ this.loadDom();
+ this.options.ready();
+
+ this.$element[0].onselectstart = document.body.ondrag = function(){
+ return false;
+ };
+
+ //按下
+ this.htmlDoms.move_block.on('touchstart', function(e) {
+ _this.start(e);
+ });
+
+ this.htmlDoms.move_block.on('mousedown', function(e) {
+ _this.start(e);
+ });
+
+ //拖动
+ window.addEventListener("touchmove", function(e) {
+ _this.move(e);
+ });
+ window.addEventListener("mousemove", function(e) {
+ _this.move(e);
+ });
+
+ //鼠标松开
+ window.addEventListener("touchend", function() {
+ _this.end();
+ });
+ window.addEventListener("mouseup", function() {
+ _this.end();
+ });
+
+ //刷新
+ _this.$element.find('.verify-refresh').on('click', function() {
+ _this.refresh();
+ });
+ },
+
+ //初始化加载
+ loadDom : function() {
+ this.img_rand = Math.floor(Math.random() * this.options.imgName.length); //随机的背景图片
+
+ var panelHtml = '';
+ var tmpHtml = '';
+
+ if(this.options.type != 1) { //图片滑动
+ panelHtml += '';
+ tmpHtml = '';
+ }
+
+ panelHtml += '';
+ this.$element.append(panelHtml);
+
+ this.htmlDoms = {
+ gap : this.$element.find('.verify-gap'),
+ sub_block : this.$element.find('.verify-sub-block'),
+ img_panel : this.$element.find('.verify-img-panel'),
+ bar_area : this.$element.find('.verify-bar-area'),
+ move_block : this.$element.find('.verify-move-block'),
+ left_bar : this.$element.find('.verify-left-bar'),
+ msg : this.$element.find('.verify-msg'),
+ icon : this.$element.find('.verify-icon'),
+ refresh :this.$element.find('.verify-refresh')
+ };
+
+ this.status = false; //鼠标状态
+ this.setSize = this.resetSize(this); //重新设置宽度高度
+
+ this.htmlDoms.gap.css({'width': this.options.blockSize.width, 'height': this.options.blockSize.height});
+ this.htmlDoms.sub_block.css({'width': this.options.blockSize.width, 'height': this.options.blockSize.height});
+ this.htmlDoms.img_panel.css({'width': this.setSize.img_width, 'height': this.setSize.img_height, 'background': 'url(images/'+this.options.imgName[this.img_rand]+')', 'background-size' : this.setSize.img_width + ' '+ this.setSize.img_height});
+ this.htmlDoms.bar_area.css({'width': this.setSize.bar_width, 'height': this.options.barSize.height, 'line-height':this.options.barSize.height});
+ this.htmlDoms.move_block.css({'width': this.options.barSize.height, 'height': this.options.barSize.height});
+ this.htmlDoms.left_bar.css({'width': this.options.barSize.height, 'height': this.options.barSize.height});
+
+ this.randSet();
+ },
+
+ //鼠标按下
+ start: function(e) {
+ this.htmlDoms.msg.text('');
+ this.htmlDoms.move_block.css('background-color', '#337ab7');
+ this.htmlDoms.left_bar.css('border-color', '#337AB7');
+ this.htmlDoms.icon.css('color', '#fff');
+ e.stopPropagation();
+ this.status = true;
+
+ },
+
+ //鼠标移动
+ move: function(e) {
+ if(this.status) {
+ if(!e.touches) { //兼容移动端
+ var x = e.clientX;
+ }else { //兼容PC端
+ var x = e.touches[0].pageX;
+ }
+ var bar_area_left = Slide.prototype.getLeft(this.htmlDoms.bar_area[0]);
+ var move_block_left = x - bar_area_left; //小方块相对于父元素的left值
+
+
+ if(this.options.type != 1) { //图片滑动
+ if(move_block_left >= this.htmlDoms.bar_area[0].offsetWidth - parseInt(parseInt(this.options.blockSize.width)/2) - 2) {
+ move_block_left = this.htmlDoms.bar_area[0].offsetWidth - parseInt(parseInt(this.options.blockSize.width)/2) - 2;
+ }
+
+
+
+
+
+ }else { //普通滑动
+ if(move_block_left >= this.htmlDoms.bar_area[0].offsetWidth - parseInt(parseInt(this.options.barSize.height)/2) + 3) {
+ this.$element.find('.verify-msg:eq(1)').text('松开验证');
+ move_block_left = this.htmlDoms.bar_area[0].offsetWidth - parseInt(parseInt(this.options.barSize.height)/2) + 3;
+ }else {
+ this.$element.find('.verify-msg:eq(1)').text('');
+ }
+ }
+
+
+ if(move_block_left <= 0) {
+ move_block_left = parseInt(parseInt(this.options.blockSize.width)/2);
+ }
+
+ //拖动后小方块的left值
+ this.htmlDoms.move_block.css('left', move_block_left-parseInt(parseInt(this.options.blockSize.width)/2) + "px");
+ this.htmlDoms.left_bar.css('width', move_block_left-parseInt(parseInt(this.options.blockSize.width)/2) + "px");
+ }
+ },
+
+ //鼠标松开
+ end: function() {
+
+ var _this = this;
+
+ //判断是否重合
+ if(this.status) {
+
+ if(this.options.type != 1) { //图片滑动
+
+ var vOffset = parseInt(this.options.vOffset);
+ if(parseInt(this.htmlDoms.gap.css('left')) >= (parseInt(this.htmlDoms.move_block.css('left')) - vOffset) && parseInt(this.htmlDoms.gap.css('left')) <= (parseInt(this.htmlDoms.move_block.css('left')) + vOffset)) {
+ this.htmlDoms.move_block.css('background-color', '#5cb85c');
+ this.htmlDoms.left_bar.css({'border-color': '#5cb85c', 'background-color': '#fff'});
+ this.htmlDoms.icon.css('color', '#fff');
+ this.htmlDoms.icon.removeClass('icon-right');
+ this.htmlDoms.icon.addClass('icon-check');
+ this.htmlDoms.refresh.hide();
+ this.htmlDoms.move_block.unbind('mousedown touchstart');
+ this.options.success();
+ }else{
+ this.htmlDoms.move_block.css('background-color', '#d9534f');
+ this.htmlDoms.left_bar.css('border-color', '#d9534f');
+ this.htmlDoms.icon.css('color', '#fff');
+ this.htmlDoms.icon.removeClass('icon-right');
+ this.htmlDoms.icon.addClass('icon-close');
+
+ setTimeout(function () {
+ _this.htmlDoms.move_block.animate({'left':'0px'}, 'fast');
+ _this.htmlDoms.left_bar.animate({'width': '40px'}, 'fast');
+ _this.htmlDoms.left_bar.css({'border-color': '#ddd'});
+
+ _this.htmlDoms.move_block.css('background-color', '#fff');
+ _this.htmlDoms.icon.css('color', '#000');
+ _this.htmlDoms.icon.removeClass('icon-close');
+ _this.htmlDoms.icon.addClass('icon-right');
+ _this.$element.find('.verify-msg:eq(0)').text('向右滑动完成验证');
+
+ }, 400);
+
+ this.options.error();
+ }
+
+ }else { //普通滑动
+
+ if(parseInt(this.htmlDoms.move_block.css('left')) >= (parseInt(this.setSize.bar_width) - parseInt(this.options.barSize.height) - parseInt(this.options.vOffset))) {
+ this.htmlDoms.move_block.css('background-color', '#5cb85c');
+ this.htmlDoms.left_bar.css({'color': '#4cae4c', 'border-color': '#5cb85c', 'background-color': '#fff' });
+ this.htmlDoms.icon.css('color', '#fff');
+ this.htmlDoms.icon.removeClass('icon-right');
+ this.htmlDoms.icon.addClass('icon-check');
+ this.htmlDoms.refresh.hide();
+ this.htmlDoms.move_block.unbind('mousedown');
+ this.htmlDoms.move_block.unbind('touchstart');
+ this.$element.find('.verify-msg:eq(1)').text('验证成功');
+ this.options.success();
+ }else {
+
+ this.htmlDoms.move_block.css('background-color', '#d9534f');
+ this.htmlDoms.left_bar.css('border-color', '#d9534f');
+ this.htmlDoms.icon.css('color', '#fff');
+ this.htmlDoms.icon.removeClass('icon-right');
+ this.htmlDoms.icon.addClass('icon-close');
+
+ setTimeout(function () {
+ _this.htmlDoms.move_block.animate({'left':'0px'}, 'fast');
+ _this.htmlDoms.left_bar.animate({'width': '40px'}, 'fast');
+ _this.htmlDoms.left_bar.css({'border-color': '#ddd'});
+
+ _this.htmlDoms.move_block.css('background-color', '#fff');
+ _this.htmlDoms.icon.css('color', '#000');
+ _this.htmlDoms.icon.removeClass('icon-close');
+ _this.htmlDoms.icon.addClass('icon-right');
+ _this.$element.find('.verify-msg:eq(0)').text('向右滑动解锁');
+
+ }, 400);
+
+ this.options.error();
+ }
+ }
+
+ this.status = false;
+ }
+ },
+
+
+ resetSize : function(obj) {
+ var img_width,img_height,bar_width,bar_height; //图片的宽度、高度,移动条的宽度、高度
+ var parentWidth = obj.$element.parent().width() || $(window).width();
+ var parentHeight = obj.$element.parent().height() || $(window).height();
+
+ if(obj.options.imgSize.width.indexOf('%')!= -1){
+ img_width = parseInt(obj.options.imgSize.width)/100 * parentWidth + 'px';
+ }else {
+ img_width = obj.options.imgSize.width;
+ }
+
+ if(obj.options.imgSize.height.indexOf('%')!= -1){
+ img_height = parseInt(obj.options.imgSize.height)/100 * parentHeight + 'px';
+ }else {
+ img_height = obj.options.imgSize.height;
+ }
+
+ if(obj.options.barSize.width.indexOf('%')!= -1){
+ bar_width = parseInt(obj.options.barSize.width)/100 * parentWidth + 'px';
+ }else {
+ bar_width = obj.options.barSize.width;
+ }
+
+ if(obj.options.barSize.height.indexOf('%')!= -1){
+ bar_height = parseInt(obj.options.barSize.height)/100 * parentHeight + 'px';
+ }else {
+ bar_height = obj.options.barSize.height;
+ }
+
+ return {img_width : img_width, img_height : img_height, bar_width : bar_width, bar_height : bar_height};
+ },
+
+ //随机出生点位
+ randSet: function() {
+ var rand1 = Math.floor(Math.random()*9+1);
+ var rand2 = Math.floor(Math.random()*9+1);
+ var top = rand1 * parseInt(this.setSize.img_height)/15 + parseInt(this.setSize.img_height) * 0.1;
+ var left = rand2 * parseInt(this.setSize.img_width)/15 + parseInt(this.setSize.img_width) * 0.1;
+
+ this.$element.find('.verify-img-panel').css('margin-bottom', this.options.vSpace + 'px');
+ this.$element.find('.verify-gap').css({'top': top, 'left': left});
+ this.$element.find('.verify-sub-block').css({'top':'-'+(parseInt(this.setSize.img_height)- top + this.options.vSpace + 2)+'px', 'background-image': 'url(images/'+this.options.imgName[this.img_rand]+')', 'background-size': this.setSize.img_width + ' '+ this.setSize.img_height,'background-position-y': '-'+top+ 'px', 'background-position-x': '-'+left+'px'});
+ },
+
+ //刷新
+ refresh: function() {
+ this.randSet();
+ this.img_rand = Math.floor(Math.random() * this.options.imgName.length); //随机的背景图片
+ this.$element.find('.verify-img-panel').css({'background': 'url(images/'+this.options.imgName[this.img_rand]+')', 'background-size': this.setSize.img_width + ' '+ this.setSize.img_height});
+ this.$element.find('.verify-sub-block').css({'background-image': 'url(images/'+this.options.imgName[this.img_rand]+')', 'background-size': this.setSize.img_width + ' '+ this.setSize.img_height});
+ },
+
+ //获取left值
+ getLeft: function(node) {
+ var left = $(node).offset().left;
+// var nowPos = node.offsetParent;
+//
+// while(nowPos != null) {
+// left += $(nowPos).offset().left;
+// nowPos = nowPos.offsetParent;
+// }
+ return left;
+ }
+ };
+
+
+ //定义Points的构造函数
+ var Points = function(ele, opt) {
+ this.$element = ele,
+ this.defaults = {
+ defaultNum : 4, //默认的文字数量
+ checkNum : 3, //校对的文字数量
+ vSpace : 5, //间隔
+ imgName : ['1.jpg', '2.jpg'],
+ imgSize : {
+ width: '400px',
+ height: '200px',
+ },
+ barSize : {
+ width : '400px',
+ height : '40px',
+ },
+ ready : function(){},
+ success : function(){},
+ error : function(){}
+ },
+ this.options = $.extend({}, this.defaults, opt)
+ };
+
+ //定义Points的方法
+ Points.prototype = {
+ init : function() {
+
+ var _this = this;
+
+ //加载页面
+ _this.loadDom();
+
+ _this.refresh();
+ _this.options.ready();
+
+ this.$element[0].onselectstart = document.body.ondrag = function(){
+ return false;
+ };
+
+ //点击事件比对
+ _this.$element.find('.verify-img-panel canvas').on('click', function(e) {
+
+ _this.checkPosArr.push(_this.getMousePos(this, e));
+
+ if(_this.num == _this.options.checkNum) {
+
+ _this.num = _this.createPoint(_this.getMousePos(this, e));
+ setTimeout(function () {
+ var flag = _this.comparePos(_this.fontPos, _this.checkPosArr);
+
+ if(flag == false) { //验证失败
+
+ _this.options.error();
+ _this.$element.find('.verify-bar-area').css({'color': '#d9534f', 'border-color': '#d9534f'});
+ _this.$element.find('.verify-msg').text('验证失败');
+
+ setTimeout(function () {
+ _this.$element.find('.verify-bar-area').css({'color': '#000','border-color': '#ddd'});
+ _this.refresh();
+ }, 400);
+
+ }else { //验证成功
+ _this.$element.find('.verify-bar-area').css({'color': '#4cae4c', 'border-color': '#5cb85c'});
+ _this.$element.find('.verify-msg').text('验证成功');
+ _this.$element.find('.verify-refresh').hide();
+ _this.$element.find('.verify-img-panel').unbind('click');
+ _this.options.success();
+ }
+ }, 400);
+
+ }
+
+ if(_this.num < _this.options.checkNum) {
+ _this.num = _this.createPoint(_this.getMousePos(this, e));
+ }
+
+ });
+
+ //刷新
+ _this.$element.find('.verify-refresh').on('click', function() {
+ _this.refresh();
+ });
+
+ },
+
+
+
+ //加载页面
+ loadDom : function() {
+
+ this.fontPos = []; //选中的坐标信息
+ this.checkPosArr = []; //用户点击的坐标
+ this.num = 1; //点击的记数
+ this.img_rand = Math.floor(Math.random() * this.options.imgName.length); //随机的背景图片
+
+ var panelHtml = '';
+ var tmpHtml = '';
+
+ this.setSize = Slide.prototype.resetSize(this); //重新设置宽度高度
+
+ panelHtml += '
';
+
+ this.$element.append(panelHtml);
+
+
+ this.htmlDoms = {
+ img_panel : this.$element.find('.verify-img-panel'),
+ bar_area : this.$element.find('.verify-bar-area'),
+ msg : this.$element.find('.verify-msg'),
+ };
+
+ this.htmlDoms.img_panel.css({'width': this.setSize.img_width, 'height': this.setSize.img_height, 'background-size' : this.setSize.img_width + ' '+ this.setSize.img_height, 'margin-bottom': this.options.vSpace + 'px'});
+ this.htmlDoms.bar_area.css({'width': this.options.barSize.width, 'height': this.options.barSize.height, 'line-height':this.options.barSize.height});
+
+ },
+
+ //绘制合成的图片
+ drawImg : function(obj, img) {
+ //准备canvas环境
+ var canvas = this.$element.find('canvas')[0];
+ //var canvas=document.getElementById("myCanvas");
+ var ctx=canvas.getContext("2d");
+
+ // 绘制图片
+ ctx.drawImage(img,0,0, parseInt(this.setSize.img_width), parseInt(this.setSize.img_height));
+
+ // 绘制水印
+ var fontSizeArr = ['italic small-caps bold 20px microsoft yahei', 'small-caps normal 25px arial', '34px microsoft yahei'];
+ var fontStr = '天地玄黄宇宙洪荒日月盈昃辰宿列张寒来暑往秋收冬藏闰余成岁律吕调阳云腾致雨露结为霜金生丽水玉出昆冈剑号巨阙珠称夜光果珍李柰菜重芥姜海咸河淡鳞潜羽翔龙师火帝鸟官人皇始制文字乃服衣裳推位让国有虞陶唐吊民伐罪周发殷汤坐朝问道垂拱平章爱育黎首臣伏戎羌遐迩体率宾归王'; //不重复的汉字
+
+
+ var fontChars = [];
+
+ var avg = Math.floor(parseInt(this.setSize.img_width)/(parseInt(this.options.defaultNum)+1));
+ var tmp_index = '';
+ var color2Num = Math.floor(Math.random() * 5);
+
+ for(var i = 1; i <= this.options.defaultNum; i++) {
+
+ fontChars[i-1] = this.getChars(fontStr, fontChars);
+
+ tmp_index = Math.floor(Math.random()*3);
+ ctx.font = fontSizeArr[tmp_index];
+ ctx.fillStyle = _code_color2[color2Num];
+
+ if(Math.floor(Math.random() * 2) == 1) {
+ var tmp_y = Math.floor(parseInt(this.setSize.img_height)/2) + tmp_index*20 + 20;
+ }else {
+ var tmp_y = Math.floor(parseInt(this.setSize.img_height)/2) - tmp_index*20;
+ }
+
+ ctx.fillText(fontChars[i-1],avg * i, tmp_y);
+ this.fontPos[i-1] = {'char': fontChars[i-1], 'x': avg * i, 'y': tmp_y};
+
+ }
+
+ for(var i = 0; i < (this.options.defaultNum-this.options.checkNum); i++) {
+ this.shuffle(this.fontPos).pop();
+ }
+
+ var msgStr = '';
+ for(var i = 0; i < this.fontPos.length; i++) {
+ msgStr += this.fontPos[i].char + ',';
+ }
+
+ this.htmlDoms.msg.text('请顺序点击【' + msgStr.substring(0,msgStr.length-1) + '】');
+
+ return this.fontPos;
+ },
+
+ //获取坐标
+ getMousePos :function(obj, event) {
+ var e = event || window.event;
+ var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
+ var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
+ var x = e.clientX - ($(obj).offset().left - $(window).scrollLeft());
+ var y = e.clientY - ($(obj).offset().top - $(window).scrollTop());
+
+ return {'x': x, 'y': y};
+ },
+
+ //递归去重
+ getChars : function(fontStr, fontChars) {
+
+ var tmp_rand = parseInt(Math.floor(Math.random() * fontStr.length));
+ if(tmp_rand > 0) {
+ tmp_rand = tmp_rand - 1;
+ }
+
+ tmp_char = fontStr.charAt(tmp_rand);
+ if($.inArray(tmp_char, fontChars) == -1) {
+ return tmp_char;
+ }else {
+ return Points.prototype.getChars(fontStr, fontChars);
+ }
+ },
+
+ //洗牌数组
+ shuffle : function(arr) {
+ var m = arr.length, i;
+ while (m) {
+ i = (Math.random() * m--) >>> 0;
+ [arr[m], arr[i]] = [arr[i], arr[m]]
+ }
+ return arr;
+ },
+
+ //创建坐标点
+ createPoint : function (pos) {
+ this.htmlDoms.img_panel.append(''+this.num+'
');
+ return ++this.num;
+ },
+
+ //比对坐标点
+ comparePos : function (fontPos, checkPosArr) {
+
+ var flag = true;
+ for(var i = 0; i < fontPos.length; i++) {
+ if(!(parseInt(checkPosArr[i].x) + 40 > fontPos[i].x && parseInt(checkPosArr[i].x) - 40 < fontPos[i].x && parseInt(checkPosArr[i].y) + 40 > fontPos[i].y && parseInt(checkPosArr[i].y) - 40 < fontPos[i].y)) {
+ flag = false;
+ break;
+ }
+ }
+
+ return flag;
+ },
+
+ //刷新
+ refresh: function() {
+ var _this = this;
+ this.$element.find('.point-area').remove();
+ this.fontPos = [];
+ this.checkPosArr = [];
+ this.num = 1;
+
+ this.img_rand = Math.floor(Math.random() * this.options.imgName.length); //随机的背景图片
+ var img = new Image();
+ img.src = 'images/'+this.options.imgName[this.img_rand];
+
+
+ // 加载完成开始绘制
+ $(img).on('load', function(e) {
+ this.fontPos = _this.drawImg(_this, this);
+ });
+
+ },
+
+ };
+
+ //在插件中使用codeVerify对象
+ $.fn.codeVerify = function(options, callbacks) {
+ var code = new Code(this, options);
+ code.init();
+ };
+
+ //在插件中使用slideVerify对象
+ $.fn.slideVerify = function(options, callbacks) {
+ var slide = new Slide(this, options);
+ slide.init();
+ };
+
+ //在插件中使用clickVerify对象
+ $.fn.pointsVerify = function(options, callbacks) {
+ var points = new Points(this, options);
+ points.init();
+ };
+
+})(jQuery, window, document);
+
+function Randoms() {
+ var myDate = new Date(); //实例一个时间对象;
+ var tmp = Number(myDate.getMinutes()+''+myDate.getSeconds());
+ retuen (tmp-500+1+2+3-4);
+}
\ No newline at end of file
diff --git a/src/main/resources/static/js/verify.min.js b/src/main/resources/static/js/verify.min.js
new file mode 100644
index 0000000..d9f644f
--- /dev/null
+++ b/src/main/resources/static/js/verify.min.js
@@ -0,0 +1,2 @@
+/*! Verify-v0.1.1 MIT License by 大熊*/
+;(function($,window,document,undefined){var Code=function(ele,opt){this.$element=ele,this.defaults={type:1,figure:100,arith:0,width:'200px',height:'60px',fontSize:'30px',codeLength:6,btnId:'check-btn',ready:function(){},success:function(){},error:function(){}},this.options=$.extend({},this.defaults,opt)};var _code_chars=[0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];var _code_color1=['#fffff0','#f0ffff','#f0fff0','#fff0f0'];var _code_color2=['#FF0033','#006699','#993366','#FF9900','#66CC66','#FF33CC'];Code.prototype={init:function(){var _this=this;this.loadDom();this.setCode();this.options.ready();this.$element[0].onselectstart=document.body.ondrag=function(){return false};this.$element.find('.verify-code, .verify-change-code').on('click',function(){_this.setCode()});this.htmlDoms.code_btn.on('click',function(){_this.checkCode()})},loadDom:function(){var panelHtml='';this.$element.append(panelHtml);this.isEnd=false;this.htmlDoms={code_btn:$('#'+this.options.btnId),code:this.$element.find('.verify-code'),code_area:this.$element.find('.verify-code-area'),code_input:this.$element.find('.varify-input-code'),};this.htmlDoms.code.css({'width':this.options.width,'height':this.options.height,'line-height':this.options.height,'font-size':this.options.fontSize});this.htmlDoms.code_area.css({'width':this.options.width})},setCode:function(){if(this.isEnd==false){var color1Num=Math.floor(Math.random()*3);var color2Num=Math.floor(Math.random()*5);this.htmlDoms.code.css({'background-color':_code_color1[color1Num],'color':_code_color2[color2Num]});this.htmlDoms.code_input.val('');var code='';this.code_chose='';if(this.options.type==1){for(var i=0;i'+_code_chars[charNum]+''}}else{var num1=Math.floor(Math.random()*this.options.figure);var num2=Math.floor(Math.random()*this.options.figure);if(this.options.arith==0){var tmparith=Math.floor(Math.random()*3)}switch(tmparith){case 1:this.code_chose=parseInt(num1)+parseInt(num2);code=num1+' + '+num2+' = ?';break;case 2:if(parseInt(num1)';this.plusWidth=parseInt(this.setSize.block_width)+parseInt(this.setSize.circle_radius)*2-parseInt(this.setSize.circle_radius)*0.2;this.plusHeight=parseInt(this.setSize.block_height)+parseInt(this.setSize.circle_radius)*2-parseInt(this.setSize.circle_radius)*0.2;tmpHtml=''}panelHtml+=tmpHtml+'';this.$element.append(panelHtml);this.htmlDoms={sub_block:this.$element.find('.verify-sub-block'),out_panel:this.$element.find('.verify-img-out'),img_panel:this.$element.find('.verify-img-panel'),img_canvas:this.$element.find('.verify-img-canvas'),bar_area:this.$element.find('.verify-bar-area'),move_block:this.$element.find('.verify-move-block'),left_bar:this.$element.find('.verify-left-bar'),msg:this.$element.find('.verify-msg'),icon:this.$element.find('.verify-icon'),refresh:this.$element.find('.verify-refresh')};this.$element.css('position','relative');if(this.options.mode=='pop'){this.htmlDoms.out_panel.css({'display':'none','position':'absolute','bottom':'42px'});this.htmlDoms.sub_block.css({'display':'none'})}else{this.htmlDoms.out_panel.css({'position':'relative'})}this.htmlDoms.out_panel.css('height',parseInt(this.setSize.img_height)+this.options.vSpace+'px');this.htmlDoms.img_panel.css({'width':this.setSize.img_width,'height':this.setSize.img_height});this.htmlDoms.bar_area.css({'width':this.setSize.bar_width,'height':this.setSize.bar_height,'line-height':this.setSize.bar_height});this.htmlDoms.move_block.css({'width':this.setSize.bar_height,'height':this.setSize.bar_height});this.htmlDoms.left_bar.css({'width':this.setSize.bar_height,'height':this.setSize.bar_height});this.randSet()},drawImg:function(obj,img){var canvas=this.htmlDoms.img_canvas[0];if(canvas){var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0,parseInt(this.setSize.img_width),parseInt(this.setSize.img_height));graphParameter={x:this.x,y:this.y,r:parseInt(this.setSize.circle_radius),w:(parseInt(this.setSize.block_width)-2*parseInt(this.setSize.circle_radius))/2,h:(parseInt(this.setSize.block_height)-2*parseInt(this.setSize.circle_radius))/2};obj.drawRule(ctx,graphParameter)}var canvas2=this.htmlDoms.sub_block[0];if(canvas2){var proportionX=img.width/parseInt(this.setSize.img_width);var proportionY=img.height/parseInt(this.setSize.img_height);var ctx2=canvas2.getContext("2d");ctx2.restore();ctx2.drawImage(img,this.x*proportionX,(this.y-parseInt(this.setSize.circle_radius)-parseInt(this.setSize.circle_radius)*0.8)*proportionY,this.plusWidth*proportionX,this.plusHeight*proportionY,0,0,this.plusWidth,this.plusHeight);ctx2.save();ctx2.globalCompositeOperation="destination-atop";graphParameter.x=0;graphParameter.y=parseInt(this.setSize.circle_radius)+parseInt(this.setSize.circle_radius)*0.8;obj.drawRule(ctx2,graphParameter)}},drawRule:function(ctx,graphParameter){var x=graphParameter.x;var y=graphParameter.y;var r=graphParameter.r;var w=graphParameter.w;var h=graphParameter.h;ctx.beginPath();ctx.moveTo(x,y);ctx.lineTo((x+w)+r*0.4,y);ctx.arc((x+w)+r,y-r*0.8,r,0.7*Math.PI,0.3*Math.PI);ctx.lineTo((x+(2*w)+(2*r)),y);ctx.lineTo((x+(2*w)+(2*r)),y+h);ctx.arc((x+(2*w)+(2*r))+(r*0.8),y+h+r,r,1.2*Math.PI,0.8*Math.PI);ctx.lineTo((x+(2*w)+(2*r)),y+(2*h)+(2*r));ctx.lineTo(x,y+(2*h)+(2*r));ctx.lineTo(x,y+h+2*r-r*0.4);ctx.arc(x+(r*0.8),y+h+r,r,0.8*Math.PI,1.2*Math.PI,true);ctx.lineTo(x,y);ctx.fillStyle="#fff";ctx.fill();ctx.closePath()},start:function(e){if(this.isEnd==false){this.htmlDoms.msg.text('');this.htmlDoms.move_block.css('background-color','#337ab7');this.htmlDoms.left_bar.css('border-color','#337AB7');this.htmlDoms.icon.css('color','#fff');e.stopPropagation();this.status=true}},move:function(e){if(this.status&&this.isEnd==false){if(this.options.mode=='pop'){this.showImg()}if(!e.touches){var x=e.clientX}else{var x=e.touches[0].pageX}var bar_area_left=Slide.prototype.getLeft(this.htmlDoms.bar_area[0]);var move_block_left=x-bar_area_left;if(this.options.type!=1){if(move_block_left>=(this.htmlDoms.bar_area[0].offsetWidth-parseInt(this.setSize.bar_height)+parseInt(parseInt(this.setSize.block_width)/2)-2)){move_block_left=(this.htmlDoms.bar_area[0].offsetWidth-parseInt(this.setSize.bar_height)+parseInt(parseInt(this.setSize.block_width)/2)-2)}}else{if(move_block_left>=this.htmlDoms.bar_area[0].offsetWidth-parseInt(parseInt(this.setSize.bar_height)/2)+3){this.$element.find('.verify-msg:eq(1)').text('松开验证');move_block_left=this.htmlDoms.bar_area[0].offsetWidth-parseInt(parseInt(this.setSize.bar_height)/2)+3}else{this.$element.find('.verify-msg:eq(1)').text('')}}if(move_block_left<=parseInt(parseInt(this.setSize.block_width)/2)){move_block_left=parseInt(parseInt(this.setSize.block_width)/2)}this.htmlDoms.move_block.css('left',move_block_left-parseInt(parseInt(this.setSize.block_width)/2)+"px");this.htmlDoms.left_bar.css('width',move_block_left-parseInt(parseInt(this.setSize.block_width)/2)+"px");this.htmlDoms.sub_block.css('left',(move_block_left-parseInt(parseInt(this.setSize.block_width)/2))*this.lengthPercent+"px")}},end:function(){var _this=this;if(this.status&&this.isEnd==false){if(this.options.type!=1){var vOffset=parseInt(this.options.vOffset);if(parseInt(this.x)>=(parseInt(this.htmlDoms.sub_block.css('left'))-vOffset)&&parseInt(this.x)<=(parseInt(this.htmlDoms.sub_block.css('left'))+vOffset)){this.htmlDoms.move_block.css('background-color','#5cb85c');this.htmlDoms.left_bar.css({'border-color':'#5cb85c','background-color':'#fff'});this.htmlDoms.icon.css('color','#fff');this.htmlDoms.icon.removeClass('icon-right');this.htmlDoms.icon.addClass('icon-check');this.htmlDoms.refresh.hide();this.isEnd=true;this.options.success(this)}else{this.htmlDoms.move_block.css('background-color','#d9534f');this.htmlDoms.left_bar.css('border-color','#d9534f');this.htmlDoms.icon.css('color','#fff');this.htmlDoms.icon.removeClass('icon-right');this.htmlDoms.icon.addClass('icon-close');setTimeout(function(){_this.refresh()},400);this.options.error(this)}}else{if(parseInt(this.htmlDoms.move_block.css('left'))>=(parseInt(this.setSize.bar_width)-parseInt(this.setSize.bar_height)-parseInt(this.options.vOffset))){this.htmlDoms.move_block.css('background-color','#5cb85c');this.htmlDoms.left_bar.css({'color':'#4cae4c','border-color':'#5cb85c','background-color':'#fff'});this.htmlDoms.icon.css('color','#fff');this.htmlDoms.icon.removeClass('icon-right');this.htmlDoms.icon.addClass('icon-check');this.htmlDoms.refresh.hide();this.$element.find('.verify-msg:eq(1)').text('验证成功');this.isEnd=true;this.options.success(this)}else{this.$element.find('.verify-msg:eq(1)').text('');this.htmlDoms.move_block.css('background-color','#d9534f');this.htmlDoms.left_bar.css('border-color','#d9534f');this.htmlDoms.icon.css('color','#fff');this.htmlDoms.icon.removeClass('icon-right');this.htmlDoms.icon.addClass('icon-close');this.isEnd=true;setTimeout(function(){_this.$element.find('.verify-msg:eq(1)').text('');_this.refresh();_this.isEnd=false},400);this.options.error(this)}}this.status=false}},showImg:function(){this.htmlDoms.out_panel.css({'display':'block'});this.htmlDoms.sub_block.css({'display':'block'})},hideImg:function(){this.htmlDoms.out_panel.css({'display':'none'});this.htmlDoms.sub_block.css({'display':'none'})},resetSize:function(obj){var img_width,img_height,bar_width,bar_height,block_width,block_height,circle_radius;var parentWidth=obj.$element.parent().width()||$(window).width();var parentHeight=obj.$element.parent().height()||$(window).height();if(obj.options.imgSize.width.indexOf('%')!=-1){img_width=parseInt(obj.options.imgSize.width)/100*parentWidth+'px'}else{img_width=obj.options.imgSize.width}if(obj.options.imgSize.height.indexOf('%')!=-1){img_height=parseInt(obj.options.imgSize.height)/100*parentHeight+'px'}else{img_height=obj.options.imgSize.height}if(obj.options.barSize.width.indexOf('%')!=-1){bar_width=parseInt(obj.options.barSize.width)/100*parentWidth+'px'}else{bar_width=obj.options.barSize.width}if(obj.options.barSize.height.indexOf('%')!=-1){bar_height=parseInt(obj.options.barSize.height)/100*parentHeight+'px'}else{bar_height=obj.options.barSize.height}if(obj.options.blockSize){if(obj.options.blockSize.width.indexOf('%')!=-1){block_width=parseInt(obj.options.blockSize.width)/100*parentWidth+'px'}else{block_width=obj.options.blockSize.width}if(obj.options.blockSize.height.indexOf('%')!=-1){block_height=parseInt(obj.options.blockSize.height)/100*parentHeight+'px'}else{block_height=obj.options.blockSize.height}}if(obj.options.circleRadius){if(obj.options.circleRadius.indexOf('%')!=-1){circle_radius=parseInt(obj.options.circleRadius)/100*parentHeight+'px'}else{circle_radius=obj.options.circleRadius}}return{img_width:img_width,img_height:img_height,bar_width:bar_width,bar_height:bar_height,block_width:block_width,block_height:block_height,circle_radius:circle_radius}},randSet:function(){var rand1=Math.floor(Math.random()*9+1);var rand2=Math.floor(Math.random()*9+1);var top=rand1*parseInt(this.setSize.img_height)/15+parseInt(this.setSize.img_height)*0.1;var left=rand2*parseInt(this.setSize.img_width)/15+parseInt(this.setSize.img_width)*0.1;this.x=left;this.y=top;if(this.options.mode=='pop'){this.htmlDoms.sub_block.css({'top':'-'+(parseInt(this.setSize.img_height)+this.options.vSpace+parseInt(this.setSize.circle_radius)+parseInt(this.setSize.circle_radius)*0.8-this.y-2)+'px'})}else{this.htmlDoms.sub_block.css({'top':this.y-(parseInt(this.setSize.circle_radius)+parseInt(this.setSize.circle_radius)*0.8)+2+'px'})}},refresh:function(){var _this=this;this.htmlDoms.refresh.show();this.$element.find('.verify-msg:eq(1)').text('');this.$element.find('.verify-msg:eq(1)').css('color','#000');this.htmlDoms.move_block.animate({'left':'0px'},'fast');this.htmlDoms.left_bar.animate({'width':parseInt(this.setSize.bar_height)},'fast');this.htmlDoms.left_bar.css({'border-color':'#ddd'});this.htmlDoms.move_block.css('background-color','#fff');this.htmlDoms.icon.css('color','#000');this.htmlDoms.icon.removeClass('icon-close');this.htmlDoms.icon.addClass('icon-right');this.$element.find('.verify-msg:eq(0)').text(this.options.explain);this.randSet();this.img_rand=Math.floor(Math.random()*this.options.imgName.length);var img=new Image();img.src=this.options.imgUrl+this.options.imgName[this.img_rand];$(img).on('load',function(e){_this.drawImg(_this,this)});this.isEnd=false;this.htmlDoms.sub_block.css('left',"0px")},getLeft:function(node){var left=$(node).offset().left;return left}};var Points=function(ele,opt){this.$element=ele,this.defaults={mode:'fixed',defaultNum:4,checkNum:3,vSpace:5,imgUrl:'images/',imgName:['1.jpg','2.jpg'],imgSize:{width:'400px',height:'200px',},barSize:{width:'400px',height:'40px',},ready:function(){},success:function(){},error:function(){}},this.options=$.extend({},this.defaults,opt)};Points.prototype={init:function(){var _this=this;_this.loadDom();_this.refresh();_this.options.ready();this.$element[0].onselectstart=document.body.ondrag=function(){return false};if(this.options.mode=='pop'){this.$element.on('mouseover',function(e){_this.showImg()});this.$element.on('mouseout',function(e){_this.hideImg()});this.htmlDoms.out_panel.on('mouseover',function(e){_this.showImg()});this.htmlDoms.out_panel.on('mouseout',function(e){_this.hideImg()})}_this.$element.find('.verify-img-panel canvas').on('click',function(e){_this.checkPosArr.push(_this.getMousePos(this,e));if(_this.num==_this.options.checkNum){_this.num=_this.createPoint(_this.getMousePos(this,e));setTimeout(function(){var flag=_this.comparePos(_this.fontPos,_this.checkPosArr);if(flag==false){_this.options.error(_this);_this.$element.find('.verify-bar-area').css({'color':'#d9534f','border-color':'#d9534f'});_this.$element.find('.verify-msg').text('验证失败');setTimeout(function(){_this.$element.find('.verify-bar-area').css({'color':'#000','border-color':'#ddd'});_this.refresh()},400)}else{_this.$element.find('.verify-bar-area').css({'color':'#4cae4c','border-color':'#5cb85c'});_this.$element.find('.verify-msg').text('验证成功');_this.$element.find('.verify-refresh').hide();_this.$element.find('.verify-img-panel').unbind('click');_this.options.success(_this)}},400)}if(_this.num<_this.options.checkNum){_this.num=_this.createPoint(_this.getMousePos(this,e))}});_this.$element.find('.verify-refresh').on('click',function(){_this.refresh()})},loadDom:function(){this.fontPos=[];this.checkPosArr=[];this.num=1;this.img_rand=Math.floor(Math.random()*this.options.imgName.length);var panelHtml='';var tmpHtml='';this.setSize=Slide.prototype.resetSize(this);panelHtml+='
';this.$element.append(panelHtml);this.htmlDoms={out_panel:this.$element.find('.verify-img-out'),img_panel:this.$element.find('.verify-img-panel'),bar_area:this.$element.find('.verify-bar-area'),msg:this.$element.find('.verify-msg'),};this.$element.css('position','relative');if(this.options.mode=='pop'){this.htmlDoms.out_panel.css({'display':'none','position':'absolute','bottom':'42px'})}else{this.htmlDoms.out_panel.css({'position':'relative'})}this.htmlDoms.out_panel.css('height',parseInt(this.setSize.img_height)+this.options.vSpace+'px');this.htmlDoms.img_panel.css({'width':this.setSize.img_width,'height':this.setSize.img_height,'background-size':this.setSize.img_width+' '+this.setSize.img_height,'margin-bottom':this.options.vSpace+'px'});this.htmlDoms.bar_area.css({'width':this.options.barSize.width,'height':this.setSize.bar_height,'line-height':this.setSize.bar_height})},drawImg:function(obj,img){var canvas=this.$element.find('canvas')[0];var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0,parseInt(this.setSize.img_width),parseInt(this.setSize.img_height));var fontSizeArr=['italic small-caps bold 20px microsoft yahei','small-caps normal 25px arial','34px microsoft yahei'];var fontStr='天地玄黄宇宙洪荒日月盈昃辰宿列张寒来暑往秋收冬藏闰余成岁律吕调阳云腾致雨露结为霜金生丽水玉出昆冈剑号巨阙珠称夜光果珍李柰菜重芥姜海咸河淡鳞潜羽翔龙师火帝鸟官人皇始制文字乃服衣裳推位让国有虞陶唐吊民伐罪周发殷汤坐朝问道垂拱平章爱育黎首臣伏戎羌遐迩体率宾归王';var fontChars=[];var avg=Math.floor(parseInt(this.setSize.img_width)/(parseInt(this.options.defaultNum)+1));var tmp_index='';var color2Num=Math.floor(Math.random()*5);for(var i=1;i<=this.options.defaultNum;i++){fontChars[i-1]=this.getChars(fontStr,fontChars);tmp_index=Math.floor(Math.random()*3);ctx.font=fontSizeArr[tmp_index];ctx.fillStyle=_code_color2[color2Num];if(Math.floor(Math.random()*2)==1){var tmp_y=Math.floor(parseInt(this.setSize.img_height)/2)+tmp_index*20+20}else{var tmp_y=Math.floor(parseInt(this.setSize.img_height)/2)-tmp_index*20}ctx.fillText(fontChars[i-1],avg*i,tmp_y);this.fontPos[i-1]={'char':fontChars[i-1],'x':avg*i,'y':tmp_y}}for(var i=0;i<(this.options.defaultNum-this.options.checkNum);i++){this.shuffle(this.fontPos).pop()}var msgStr='';for(var i=0;i0){tmp_rand=tmp_rand-1}tmp_char=fontStr.charAt(tmp_rand);if($.inArray(tmp_char,fontChars)==-1){return tmp_char}else{return Points.prototype.getChars(fontStr,fontChars)}},shuffle:function(arr){var m=arr.length,i;var tmpF;while(m){i=(Math.random()*m--)>>>0;tmpF=arr[m];arr[m]=arr[i];arr[i]=tmpF}return arr},createPoint:function(pos){this.htmlDoms.img_panel.append(''+this.num+'
');return++this.num},comparePos:function(fontPos,checkPosArr){var flag=true;for(var i=0;ifontPos[i].x&&parseInt(checkPosArr[i].x)-40fontPos[i].y&&parseInt(checkPosArr[i].y)-40
-
-
\ No newline at end of file
diff --git a/src/main/resources/static/xcc/fonts/fontawesome-webfont.ttf b/src/main/resources/static/xcc/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 86784df..0000000
Binary files a/src/main/resources/static/xcc/fonts/fontawesome-webfont.ttf and /dev/null differ
diff --git a/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff b/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff
deleted file mode 100644
index c7faa19..0000000
Binary files a/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff and /dev/null differ
diff --git a/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff2 b/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index cab8571..0000000
Binary files a/src/main/resources/static/xcc/fonts/fontawesome-webfont.woff2 and /dev/null differ
diff --git a/src/main/resources/templates/admin/storageconfig.html b/src/main/resources/templates/admin/storageconfig.html
index 4974d0c..160756a 100644
--- a/src/main/resources/templates/admin/storageconfig.html
+++ b/src/main/resources/templates/admin/storageconfig.html
@@ -318,7 +318,9 @@
success: function (data) {
if (data > 0) {
layer.msg("保存成功", {icon: 1});
- } else {
+ } else if(data==-1){
+ layer.msg("对象存储有参数为空,初始化失败", {icon: 2});
+ }else{
layer.msg("保存失败", {icon: 2});
}
}
@@ -340,7 +342,9 @@
success: function (data) {
if (data > 0) {
layer.msg("保存成功", {icon: 1});
- } else {
+ } else if(data==-1){
+ layer.msg("对象存储有参数为空,初始化失败", {icon: 2});
+ }else{
layer.msg("保存失败", {icon: 2});
}
}
@@ -366,7 +370,9 @@
success: function (data) {
if (data > 0) {
layer.msg("保存成功", {icon: 1});
- } else {
+ } else if(data==-1){
+ layer.msg("对象存储有参数为空,初始化失败", {icon: 2});
+ }else{
layer.msg("保存失败", {icon: 2});
}
}
diff --git a/src/main/resources/templates/admin/table.html b/src/main/resources/templates/admin/table.html
index c73fdd4..9ab3ca3 100644
--- a/src/main/resources/templates/admin/table.html
+++ b/src/main/resources/templates/admin/table.html
@@ -3,7 +3,7 @@
- 本站概况
+ 图片列表
@@ -188,7 +188,7 @@
-
+
@@ -532,7 +532,8 @@
//EMAIL
title: '大小',
formatter: function (value, rows, index) {
- return rows.sizes + "k";
+ return getSize(rows.sizes*1024);
+ //return rows.sizes + "k";
},
align: 'center'
},
@@ -637,7 +638,14 @@
})
}
-
+ //自动判断B K M
+ function getSize(bytes) {
+ if (bytes === 0) return '0 B';
+ var k = 1024;
+ sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+ i = Math.floor(Math.log(bytes) / Math.log(k));
+ return (bytes / Math.pow(k, i)).toFixed(2) + ' ' + sizes[i];
+ }
diff --git a/src/main/resources/templates/admin/webconfig.html b/src/main/resources/templates/admin/webconfig.html
index f8df461..269a6fe 100644
--- a/src/main/resources/templates/admin/webconfig.html
+++ b/src/main/resources/templates/admin/webconfig.html
@@ -40,7 +40,7 @@
填写访问本站的域名或IP,否则开启邮箱激活不能正常使用。需带有http://或https://
+ th:value="${config.getDomain()}"/>填写访问本站的域名或IP,需带有http://或https://,否则开启邮箱激活和本地存储不能正常使用。如:http://127.0.0.1:8088,IP需带端口,最后不需要加/
@@ -94,20 +94,20 @@
-
-
-
-
-
-
-
+
@@ -312,15 +331,16 @@
@@ -365,13 +385,15 @@
-
-
-
+