提交 c54fd6b0 编写于 作者: 青阳龙野's avatar 青阳龙野

v1.0.23-release

上级 69080575
......@@ -77,9 +77,14 @@ _注:kift为该功能的开发名称,其实际成果命名为kiftd。_
> 提示:当您更新版本后,请手动清除浏览器的缓存,之后刷新网盘主页以确保数据文件保持最新!否则可能导致新版页面功能无法使用。
### 常规更新v1.0.22
_本次更新为维护性的更新,修复一些已经发现的问题以优化使用体验,推荐所有用户升级。_
+ 优化了在线音乐播放功能——现在,kiftd的在线音乐播放功能能够正确显示使用非UTF-8编码的中文LRC歌词了。
### 新版本v1.0.23
_本次更新加入了用户们期待的一些新功能,进一步增强kiftd的使用体验,推荐所有用户升级。_
+ 用户修改密码功能——这是用户们反馈最多的功能。现在,只需在设置中启用该功能便可以让访问者直接在主页上自由地修改账户的登录密码了。
+ 永久资源链接功能——为满足用户希望将kiftd作为在线资源服务器的需求,您可以在设置中启用该功能,这样kiftd将为每个文件生成一个永久有效的外部资源链接(外链)从而方便用户将kiftd中的文件资源(如图片、视频、音乐甚至是HTML页面等)在其他位置引用。
+ 自由注册新账户功能——这是用户们反馈第二多的功能。现在,只需在账户配置文件中添加该功能的设置项便可以让访问者在您的kiftd中自由注册新账户了,详细内容请参见《kiftd说明文档》。
+ 设定IP访问限制——现在,kiftd允许通过账户配置文件中的相关设置来禁止或者只允许特定IP进行访问您的kiftd。
+ 完善了日志信息内容——日志内容中新增了关于操作者IP地址的记录,方便您对某项操作请求的来源进行跟踪。
+ 在主页面的源代码中新增了服务器的版本号标注——这样,您便可以通过浏览器的“显示网页源代码”功能在线查看kiftd服务器的版本了。
> 需要查看更多版本历史信息?请访问: https://kohgylw.gitee.io/News.html
......@@ -122,4 +127,4 @@ _本次更新为维护性的更新,修复一些已经发现的问题以优化
_作者会每隔1-3周浏览一次邮箱,如未能及时回复请耐心等待。回复或许会迟到,但它不会缺席。_
2019-09-02 kohgylw@青阳龙野 作者保留版权
2018-2019 kohgylw@青阳龙野 作者保留版权
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kohgylw.kiftd.server.mapper.PropertiesMapper">
<resultMap id="BaseResultMap" type="kohgylw.kiftd.server.model.Propertie">
<id column="propertie_key" jdbcType="VARCHAR" property="propertieKey" />
<result column="propertie_value" jdbcType="VARCHAR" property="propertieValue" />
</resultMap>
<insert id="insert" parameterType="kohgylw.kiftd.server.model.Propertie">
INSERT INTO PROPERTIES
VALUES(#{propertieKey,jdbcType=VARCHAR},#{propertieValue,jdbcType=VARCHAR})
</insert>
<update id="update" parameterType="kohgylw.kiftd.server.model.Propertie">
UPDATE PROPERTIES SET propertie_value =
#{propertieValue,jdbcType=VARCHAR} WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</update>
<delete id="deleteByKey" parameterType="java.lang.String">
DELETE FROM PROPERTIES WHERE
propertie_key = #{propertieKey,jdbcType=VARCHAR}
</delete>
<select id="selectByKey" parameterType="java.lang.String"
resultMap="BaseResultMap">
SELECT * FROM PROPERTIES WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
<!doctype html>
<!-- kiftd 主页面 by 青阳龙野 -->
<!-- 青阳网络文件传输系统 kiftd v1.0.23-RELEASE -->
<!-- 欢迎访问主界面 -->
<!-- by 青阳龙野(kohgylw@163.com) -->
<html>
<head>
<base href="/">
......@@ -428,9 +430,9 @@
onclick="checkimportpath()" onfocus="this.blur()"
placeholder="请点击选择要上传的文件夹……" folderConstraintLevel="0">
<div class="input-group-btn">
<button id="importFolderLevelBtn" type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<button id="importFolderLevelBtn" type="button"
class="btn btn-default dropdown-toggle" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
&nbsp;<span id="importfoldertype">公开的</span>&nbsp;<span
class="caret"></span>
</button>
......@@ -466,8 +468,7 @@
</p>
<p>
<button id="importcoverbtn" type="button"
class="btn btn-danger btn-sm"
onclick="importAndCover()">覆盖</button>
class="btn btn-danger btn-sm" onclick="importAndCover()">覆盖</button>
<button type="button" class="btn btn-default btn-sm"
onclick="abortImport()">取消上传</button>
<button type="button" class="btn btn-default btn-sm"
......@@ -476,7 +477,8 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" onclick='abortImport()'>取消</button>
<button type="button" class="btn btn-default"
onclick='abortImport()'>取消</button>
<button id="importbutton" type='button' class='btn btn-primary'
onclick='checkImportFolder()'>开始上传</button>
</div>
......@@ -725,6 +727,86 @@
</div>
</div>
<!-- end 文件夹详情模态框 -->
<!-- 修改密码模态框 -->
<div class="modal fade bs-example-modal-sm" id="changePasswordModal"
tabindex="-1" role="dialog" aria-labelledby="changePasswordModelTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="changePasswordModelTitle">
<span class="glyphicon glyphicon-edit"></span> 修改密码
</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group" id="changepassword_oldepwdbox">
<label for="changepassword_oldpwd"
id="changepassword_oldpwdtitle" class="col-sm-3 control-label">旧密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_oldpwd" placeholder="请输入旧密码确认身份……">
</div>
</div>
<div class="form-group" id="changepassword_newpwdbox">
<label for="changepassword_newpwd"
id="changepassword_newpwdtitle" class="col-sm-3 control-label">新密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_newpwd" placeholder="请输入新密码……">
</div>
</div>
<div class="form-group" id="changepassword_reqnewpwdbox">
<label for="changepassword_reqnewpwd"
id="changepassword_reqnewpwdtitle"
class="col-sm-3 control-label">确认新密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_reqnewpwd" placeholder="请再次输入新密码……">
</div>
</div>
<div id="changepassword_vccodebox" class="form-group"></div>
<div id="changepasswordalertbox" class="alert alert-danger"
role="alert"></div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" id="changePasswordButton"
class="btn btn-danger" onclick="doChangePassword()">立即修改</button>
</div>
</div>
</div>
</div>
<!-- end 改密 -->
<!-- 永久资源链接显示模态框 -->
<div class="modal fade" id="fileChainModal" tabindex="-1" role="dialog"
aria-labelledby="chainModalLabel">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="chainModalLabel">
<span class="glyphicon glyphicon-link"></span> 资源链接
</h4>
</div>
<div class="modal-body">
<textarea id="fileChainTextarea" class="form-control" rows="3" readonly></textarea>
</div>
<div class="modal-footer">
<button id="copyChainBtn" type="button" class="btn btn-info" onclick="copyFileChain()">复制链接</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
<!-- end 永久资源链接 -->
<!-- 返回顶部按钮(隐藏式) -->
<div id="gobacktotopbox" class="gobacktopbox text-center hidden">
<button type="button" onclick="goBackToTop()" class="gobacktopbutton">
......
......@@ -16,6 +16,7 @@ var constraintLevel;// 当前文件夹限制等级
var account;// 用户账户
var isUpLoading=false;// 是否正在执行上传操作
var isImporting=false;// 是否正在执行上传文件夹操作
var isChangingPassword=false;// 是否正在执行修改密码操作
var importFolderName;// 上传文件夹时保存文件夹名称
var xhr;// 文件或文件夹上传请求对象
var viewerPageSize = 15; // 显示图片页的最大长度,注意最好是奇数
......@@ -332,6 +333,22 @@ $(function() {
$('#downloadURLCollapse').on('shown.bs.collapse', function () {
getDownloadURL();
});
// 开启修改密码模态框时初始化状态
$('#changePasswordModal').on('show.bs.modal', function(e) {
if(!isChangingPassword){
$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', false);
$("#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox").removeClass("has-error");
$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd").val("");
$("#changepasswordalertbox,#changepassword_vccodebox").hide();
}
});
// 并自动聚焦旧密码输入框
$('#changePasswordModal').on('shown.bs.modal', function(e) {
if(!isChangingPassword){
$("#changepassword_oldpwd").focus();
}
});
});
// 根据屏幕大小增删表格显示内容
......@@ -371,13 +388,12 @@ function getServerOS() {
$.ajax({
type : "POST",
dataType : "text",
data : {
},
data : {},
url : "homeController/getServerOS.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
return;
}
$("#serverOS").text(result);
},
......@@ -405,7 +421,7 @@ function showFolderView(fid,targetId) {
$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
$("#parentlistbox").html("<span class='graytext'>获取失败,请尝试刷新</span>");
} else if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else if(result == "NOT_FOUND") {
document.cookie = "folder_id=" + escape("root");// 归位记忆路径
window.location.href="/";
......@@ -567,7 +583,7 @@ function sendLoginInfo(encrypted) {
case "error":
$("#alertbox").addClass("alert");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录失败,登录请求无法通过效验(可能是请求耗时过长导致的)");
$("#alertbox").text("提示:登录失败,登录请求无法通过加密效验(可能是请求耗时过长导致的)");
break;
default:
$("#alertbox").addClass("alert");
......@@ -645,7 +661,7 @@ function showAccountView(folderView) {
$("#tb,#tb2").html("");
account=folderView.account;
if (folderView.account != null) {
// 说明已经等陆,显示注销按钮
// 说明已经登录,显示注销按钮
$("#tb")
.append(
"<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#logoutModal'>注销 ["
......@@ -656,6 +672,14 @@ function showAccountView(folderView) {
"<button class='btn btn-link' data-toggle='modal' data-target='#logoutModal'>注销 ["
+ folderView.account
+ "] <span class='glyphicon glyphicon-off' aria-hidden='true'></span></button>");
if(folderView.allowChangePassword == 'true'){
$("#tb")
.append(
" <button class='btn btn-link rightbtn' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>");
$("#tb2")
.append(
" <button class='btn btn-link' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>");
}
} else {
// 说明用户未登录,显示登录按钮
$("#tb")
......@@ -664,6 +688,14 @@ function showAccountView(folderView) {
$("#tb2")
.append(
"<button class='btn btn-link' data-toggle='modal' data-target='#loginModal'>登入 <span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>");
if(folderView.allowSignUp == 'true'){
$("#tb")
.append(
" <button class='btn btn-link rightbtn' onclick='window.location.href = \"/prv/signup.html\"'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>");
$("#tb2")
.append(
" <button class='btn btn-link' onclick='window.location.href = \"prv/signup.html\"'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>");
}
}
var authList = folderView.authList;
// 对操作菜单进行初始化,根据权限显示可操作的按钮(并非约束)。
......@@ -949,6 +981,16 @@ function showFolderTable(folderView) {
+ '"'
+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-sunglasses'></span> 定位</button>";
}
if (aL && folderView.showFileChain == 'true') {
fileRow = fileRow
+ "<button onclick='getFileChain("
+ '"'
+ fi.fileId
+ '","'
+ fi.fileName
+ '"'
+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-link'></span> 链接</button>";
}
if (!aR && !aD && !aL && !aO) {
fileRow = fileRow + "--";
}
......@@ -996,7 +1038,7 @@ function createfolder() {
url : "homeController/newFolder.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
showFolderAlert("提示:您的操作未被授权,创建文件夹失败。");
......@@ -1062,7 +1104,7 @@ function deleteFolder(folderId) {
url : "homeController/deleteFolder.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
$('#deleteFolderMessage').text("提示:您的操作未被授权,删除文件夹失败");
......@@ -1130,7 +1172,7 @@ function renameFolder(folderId) {
url : "homeController/renameFolder.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
showRFolderAlert("提示:您的操作未被授权,编辑失败。");
......@@ -1245,7 +1287,7 @@ function checkUploadFile() {
url : "homeController/checkUploadFile.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "errorParameter") {
showUploadFileAlert("提示:参数不正确,无法开始上传");
......@@ -1499,7 +1541,7 @@ function deleteFile(fileId) {
url : "homeController/deleteFile.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
$('#deleteFileMessage').text("提示:您的操作未被授权,删除失败");
......@@ -1556,7 +1598,7 @@ function renameFile(fileId) {
url : "homeController/renameFile.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "cannotRenameFile") {
showRFileAlert("提示:出现意外错误,可能未能重命名文件,请刷新后重试。");
......@@ -1950,7 +1992,7 @@ function deleteAllChecked() {
url : "homeController/deleteCheckedFiles.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
$('#deleteFileMessage').text("提示:您的操作未被授权,删除失败");
......@@ -2217,7 +2259,7 @@ function doMoveFiles(){
url : "homeController/confirmMoveFiles.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
$('#moveFilesMessage').text("提示:您的操作未被授权,移动失败");
......@@ -2311,7 +2353,7 @@ function sendMoveFilesReq(){
url : "homeController/moveCheckedFiles.ajax",
success : function(result) {
if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else {
if (result == "noAuthorized") {
$('#moveFilesMessage').text("提示:您的操作未被授权,移动失败");
......@@ -2413,7 +2455,7 @@ function selectInCompletePath(keyworld){
$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
$("#parentlistbox").html("<span class='graytext'>获取失败,请尝试刷新</span>");
} else if (result == "mustLogin") {
window.location.href = "login.html";
window.location.href = "prv/login.html";
} else if(result == "notAccess"){
document.cookie = "folder_id=" + escape("root");
window.location.href="/";
......@@ -2588,7 +2630,7 @@ function checkImportFolder(){
showImportFolderAlert("提示:参数不正确,无法开始上传");
break;
case 'mustLogin':
window.location.href = "login.html";
window.location.href = "prv/login.html";
break;
case 'fileOverSize':
showImportFolderAlert("提示:文件["+ifs[maxFileIndex].webkitRelativePath+"]的体积超过最大限制("+resJson.maxSize+"),无法开始上传");
......@@ -2796,4 +2838,175 @@ function abortImport(){
function changeImportFolderType(type){
$("#importfoldertype").text(folderTypes[type]);
$("#folderpath").attr("folderConstraintLevel",type+"");
}
// 修改密码
function doChangePassword(){
// 还原提示状态
$("#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox").removeClass("has-error");
$("#changepasswordalertbox").hide();
var change_oldPassword = $("#changepassword_oldpwd").val();
var change_newPassword = $("#changepassword_newpwd").val();
var change_reqNewPassword = $("#changepassword_reqnewpwd").val();
// 输入非空检查
if (change_oldPassword.length == 0) {
$("#changepassword_oldepwdbox").addClass("has-error");
$("#changepassword_oldpwd").focus();
return;
}
if (change_newPassword.length == 0) {
$("#changepassword_newpwdbox").addClass("has-error");
$("#changepassword_newpwd").focus();
return;
}
if (change_reqNewPassword.length == 0) {
$("#changepassword_reqnewpwdbox").addClass("has-error");
$("#changepassword_reqnewpwd").focus();
return;
}
// 确认密码检查
isChangingPassword=true;
$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', true);
if (change_newPassword+"" != change_reqNewPassword+"") {
showChangePasswordAlert("提示:两次输入的新密码不一致,请检查确认");
$("#changepassword_newpwdbox").addClass("has-error");
$("#changepassword_reqnewpwdbox").addClass("has-error");
return;
}
// 以加密方式发送修改密码请求
$.ajax({
url : 'homeController/getPublicKey.ajax',
type : 'POST',
data : {},
dataType : 'text',
success : function(result) {
// 获取公钥
var changepwd_publicKeyInfo=eval("("+result+")");
// 生成JSON对象格式的信息
var changePasswordInfo = '{oldPwd:"' + change_oldPassword + '",newPwd:"'
+ change_newPassword + '",time:"' + changepwd_publicKeyInfo.time + '"}';
var encrypt = new JSEncrypt();// 加密插件对象
encrypt.setPublicKey(changepwd_publicKeyInfo.publicKey);// 设置公钥
var encrypted = encrypt.encrypt(changePasswordInfo);// 进行加密
sendChangePasswordInfo(encrypted);
},
error : function() {
showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态");
}
});
}
// 将加密数据发送至服务器并显示操作结果
function sendChangePasswordInfo(encrypted){
$.ajax({
type : "POST",
dataType : "text",
url : "homeController/doChangePassword.ajax",
data : {
encrypted : encrypted,
vercode : $("#changepassword_vercode").val()
},
success : function(result) {
$("#changepassword_vccodebox").hide();
isChangingPassword=false;
switch (result) {
case "success":
$('#changePasswordModal').modal('hide');
break;
case "mustlogin":
showChangePasswordAlert("提示:登录已失效或尚未登录账户,请刷新并登陆账户");
break;
case "illegal":
showChangePasswordAlert("提示:用户修改密码功能已被禁用,请求被拒绝");
break;
case "oldpwderror":
showChangePasswordAlert("提示:旧密码输入错误,请求被拒绝");
$("#changepassword_oldepwdbox").addClass("has-error");
break;
case "needsubmitvercode":
$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton").attr('disabled', false);
$("#changepassword_vccodebox").html("<label id='changepassword_vercodetitle' class='col-sm-5'><img id='changepassword_showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s="+(new Date()).getTime()+"' onclick='changePasswordGetNewVerCode()'></label><div class='col-sm-7'><input type='text' class='form-control' id='changepassword_vercode' placeholder='验证码……'></div>");
$("#changepassword_vccodebox").show();
isChangingPassword=false;
break;
case "invalidnewpwd":
showChangePasswordAlert("提示:密码修改失败,新密码不合法。新密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。");
break;
case "error":
showChangePasswordAlert("提示:密码修改失败,修改请求无法通过加密效验(可能是请求耗时过长导致的)");
break;
case "cannotchangepwd":
showChangePasswordAlert("提示:密码修改失败,发生意外错误,请稍后重试或联系管理员");
break;
default:
showChangePasswordAlert("提示:密码修改失败,发生未知错误");
break;
}
},
error : function() {
showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态");
}
});
}
// 显示修改密码错误提示
function showChangePasswordAlert(txt) {
isChangingPassword=false;
$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', false);
$("#changepasswordalertbox").show();
$("#changepasswordalertbox").text(txt);
}
// (修改密码版本的)获取一个新的验证码
function changePasswordGetNewVerCode(){
$("#changepassword_showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}
// 获取永久资源链接
function getFileChain(fileId,fileName){
$("#fileChainTextarea").text("正在获取……");
$("#copyChainBtn").attr('disabled', true);
$('#fileChainModal').modal('show');
$.ajax({
type : "POST",
dataType : "text",
url : "homeController/getFileChainKey.ajax",
data : {
fid : fileId
},
success : function(result) {
switch (result) {
case "ERROR":
$("#fileChainTextarea").text("提示:获取失败,请刷新页面或稍后再试。");
break;
case "mustlogin":
window.location.href = "prv/login.html";
break;
default:
var getChainFileName=fileName.replace("#","%23").replace("%","%25").replace("?","%3F");
$("#fileChainTextarea").text(encodeURI(window.location.protocol+"//"+window.location.host+"/externalLinksController/chain/"+getChainFileName+"?ckey=")+encodeURIComponent(result));
$("#copyChainBtn").attr('disabled', false);
break;
}
},
error : function() {
$("#fileChainTextarea").text("提示:获取失败,无法连接服务器。");
}
});
}
// 复制链接内容
function copyFileChain(){
let node = document.getElementById('fileChainTextarea');// input框
let issafariBrowser = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
if(issafariBrowser){
node.setSelectionRange(0, 9999);
}else{
const range = document.createRange();
range.selectNode(node);
const selection = window.getSelection();
if(selection.rangeCount > 0) selection.removeAllRanges();
selection.addRange(range);
}
document.execCommand('copy');
}
\ No newline at end of file
此差异已折叠。
......@@ -16,6 +16,23 @@ $(function() {
$("#vercodebox").addClass("hidden");
// 打开页面自动聚焦账户输入框
$("#accountid").focus();
// 询问是否可以显示注册按钮
$.ajax({
type : "POST",
dataType : "text",
data : {},
url : "homeController/askForAllowSignUpOrNot.ajax",
success : function(result) {
if (result == "true") {
$("#signupBox").removeClass("hidden");
$("#signupBox").addClass("show");
return;
}
},
error : function() {
alert("错误:无法连接到kiftd服务器,请检查您的网络连接或查看服务器运行状态。");
}
});
})
function dologin() {
......@@ -78,7 +95,7 @@ function sendLoginInfo(encrypted) {
case "permitlogin":
$("#accountidbox").removeClass("has-error");
$("#accountpwdbox").removeClass("has-error");
window.location.href = "home.html";
window.location.href = "/home.html";
break;
case "accountnotfound":
$("#accountidbox").addClass("has-error");
......
/**
* For signup.html
*/
$(function(){
// 回车键快捷操作
$("body").keypress(function(e) {
var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if (keyCode == 13) {
var g = $("#signupBtn").click();
return false;
}
});
$("#accountid").focus();//再自动聚焦账户输入框
})
//获取一个新的验证码
function getNewVerCode(){
$("#showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}
//执行注册过程
function doSignUp(){
// 还原提示状态
$("#accountidbox,#accountpwdbox,#repaccountpwdbox").removeClass("has-error");
$("#alertbox").removeClass("show");
$("#alertbox").addClass("hidden");
var accountId = $("#accountid").val();
var accountPwd = $("#accountpwd").val();
var repAccountPwd = $("#repaccountpwd").val();
// 输入非空检查
if (accountId.length == 0) {
$("#accountidbox").addClass("has-error");
$("#accountid").focus();
return;
}
if (accountPwd.length == 0) {
$("#accountpwdbox").addClass("has-error");
$("#accountpwd").focus();
return;
}
if (repAccountPwd.length == 0) {
$("#repaccountpwdbox").addClass("has-error");
$("#repaccountpwd").focus();
return;
}
// 确认密码检查
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', true);
if (accountPwd+"" != repAccountPwd+"") {
showAlert("提示:两次输入的新密码不一致,请检查确认");
$("#accountpwdbox").addClass("has-error");
$("#repaccountpwdbox").addClass("has-error");
return;
}
// 以加密方式发送修改密码请求
$.ajax({
url : 'homeController/getPublicKey.ajax',
type : 'POST',
data : {},
dataType : 'text',
success : function(result) {
// 获取公钥
var signup_publicKeyInfo=eval("("+result+")");
// 生成JSON对象格式的信息
var signUpInfo = '{account:"' + accountId + '",pwd:"'
+ accountPwd + '",time:"' + signup_publicKeyInfo.time + '"}';
var encrypt = new JSEncrypt();// 加密插件对象
encrypt.setPublicKey(signup_publicKeyInfo.publicKey);// 设置公钥
var encrypted = encrypt.encrypt(signUpInfo);// 进行加密
sendSignUpInfo(encrypted);
},
error : function() {
showAlert("提示:注册失败,请检查网络链接或服务器运行状态");
}
});
}
// 将加密数据发送至服务器并显示操作结果
function sendSignUpInfo(encrypted){
$.ajax({
type : "POST",
dataType : "text",
url : "homeController/doSigUp.ajax",
data : {
encrypted : encrypted,
vercode : $("#vercode").val()
},
success : function(result) {
switch (result) {
case "success":
$("#accountidbox,#accountpwdbox,#repaccountpwdbox").removeClass("has-error");
window.location.href = "/home.html";
break;
case "illegal":
showAlert("提示:注册功能已被禁用,请求被拒绝");
break;
case "accountexists":
showAlert("提示:该账户名已存在,请使用其他账户名进行注册");
$("#accountidbox").addClass("has-error");
break;
case "needvercode":
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', false);
$("#vercodebox").removeClass("hidden");
$("#vercodebox").addClass("show");
getNewVerCode();
break;
case "invalidaccount":
showAlert("提示:注册失败,账户名不合法。账户名的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。");
$("#accountidbox").addClass("has-error");
break;
case "mustlogout":
showAlert("提示:您已经登入了一个账户,请先注销后再执行本操作");
break;
case "invalidpwd":
showAlert("提示:注册失败,密码格式不正确。密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。");
$("#accountpwdbox").addClass("has-error");
$("#repaccountpwdbox").addClass("has-error");
break;
case "error":
showAlert("提示:注册失败,注册请求无法通过加密效验(可能是请求耗时过长导致的)");
break;
case "cannotsignup":
showAlert("提示:注册失败,发生意外错误,请稍后重试或联系管理员");
break;
default:
showAlert("提示:注册失败,发生未知错误");
break;
}
},
error : function() {
showAlert("提示:注册失败,请检查网络链接或服务器运行状态");
}
});
}
// 显示修改密码错误提示
function showAlert(txt) {
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', false);
$("#alertbox").removeClass("hidden");
$("#alertbox").addClass("show");
$("#alertbox").text(txt);
}
\ No newline at end of file
<!doctype html>
<html>
<head>
<base href="/">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KIFT</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/overrall.min.css">
<link rel="icon" type="image/x-icon" href="css/icon.png" />
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="titlebox">
<span class="titletext"><em> 青阳网络文件传输系统 <small><span
class="graytext">KIFT</span></small></em></span>
</div>
<hr />
</div>
</div>
<div class="row">
<div class="col-md-12">
<h2 class="centerText">
<span class="glyphicon glyphicon-exclamation-sign"
aria-hidden="true"></span>错误:拒绝访问!
</h2>
<br />
<h4 class="centerText">您无权访问该服务器,请求已经被阻止。如有疑问请联系管理员。</h4>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</html>
\ No newline at end of file
......@@ -66,6 +66,11 @@
<div id="alertbox" role="alert"></div>
<input id="loginBtn" class="form-control btn-success"
type="button" value="登录" onclick="dologin()"> <br />
<div id="signupBox" class="hidden">
<input class="form-control btn-info"
type="button" value="立即注册"
onclick="window.location.href = '/prv/signup.html'"> <br />
</div>
</form>
</div>
</div>
......
<!doctype html>
<html>
<head>
<base href="/">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
name="viewport" />
<title>KIFT</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/overrall.min.css">
<link rel="icon" type="image/x-icon" href="css/icon.png" />
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="titlebox">
<span class="titletext"><em> 青阳网络文件传输系统 <small><span
class="graytext">KIFT</span></small></em></span>
</div>
<hr />
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<p class="centerText" style="font-size: 30px; color: #4D4D4D">
<strong>欢迎注册新账户</strong>
</p>
<p class="centerText" style="font-size: 18px; color: #9C9C9C">
<span class="glyphicon glyphicon-log-in"></span> 请输入以下信息来创建您的新账户
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">注册新账户</h3>
</div>
<div class="panel-body">
<form class="form-horizontal">
<div class="form-group" id="accountidbox">
<label for="accountid" id="accountidtitle"
class="col-sm-3 control-label">账户名:</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="accountid"
placeholder="请输入要注册的账户名……">
</div>
</div>
<div class="form-group" id="accountpwdbox">
<label for="accountpwd" id="accountpwdtitle"
class="col-sm-3 control-label">密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="accountpwd"
placeholder="请输入新账户的密码……">
</div>
</div>
<div class="form-group" id="repaccountpwdbox">
<label for="accountpwd" id="repaccountpwdtitle"
class="col-sm-3 control-label">确认密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="repaccountpwd"
placeholder="请再次输入新账户的密码……">
</div>
</div>
<br />
<div id="vercodebox" class="form-group hidden"><label class='col-sm-5'><img id='showvercode' class='vercodeimg' alt='点击获取验证码' src='' onclick='getNewVerCode()'></label><div class='col-sm-7'><input type='text' class='form-control' id='vercode' placeholder='请输入验证码进行验证……'></div></div>
<div id="alertbox" role="alert" class="alert alert-danger hidden"></div>
<input id="signupBtn" class="form-control btn-primary"
type="button" value="立即注册" onclick="doSignUp()"> <br />
<input class="form-control btn-danger" type="button" value="返回"
onclick="window.location.href = '/home.html'"> <br />
</form>
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jsencrypt.min.js"></script>
<script type="text/javascript" src="js/signup.js"></script>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册