224 lines
8.3 KiB
Java
224 lines
8.3 KiB
Java
package com.yutou.tools.nas;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.yutou.tools.mybatis.dao.NasAdminAddressDao;
|
|
import com.yutou.tools.mybatis.model.NasAdminAddress;
|
|
import com.yutou.tools.mybatis.model.NasAdminAddressExample;
|
|
import com.yutou.tools.utils.ConfigTools;
|
|
import com.yutou.tools.utils.HttpTools;
|
|
import com.yutou.tools.utils.RedisTools;
|
|
import com.yutou.tools.utils.Tools;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
@Controller
|
|
public class NasManager {
|
|
public static final String NasUrl="http://yutou233.cn";
|
|
@Resource
|
|
NasAdminAddressDao adminAddressDao;
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/get.do",method = RequestMethod.GET)
|
|
public String getAdminAddress(HttpServletRequest request){
|
|
JSONObject json=new JSONObject();
|
|
|
|
String address= RedisTools.get("adminAddress");
|
|
if(address==null){
|
|
json.put("code",-1);
|
|
json.put("msg","暂未设置管理后台");
|
|
}else{
|
|
JSONObject js=JSONObject.parseObject(address);
|
|
json.put("code",0);
|
|
json.put("msg","当前状态:"+js.getString("url")+":"+js.getString("port"));
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/list.do",method = RequestMethod.GET)
|
|
public String addressList(HttpServletRequest request){
|
|
JSONObject json =new JSONObject();
|
|
try{
|
|
List<NasAdminAddress> list=adminAddressDao.selectByExample(new NasAdminAddressExample());
|
|
json.put("code",0);
|
|
json.put("msg","ok");
|
|
json.put("count",list.size());
|
|
if(list.size()==0){
|
|
json.put("data",new JSONArray());
|
|
}else {
|
|
json.put("data", JSONArray.toJSON(list));
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
json.put("code",-1);
|
|
json.put("count",0);
|
|
json.put("msg",e.getMessage());
|
|
json.put("data","[]");
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/add.do",method = RequestMethod.POST)
|
|
public String addAddress(HttpServletRequest request,String url,String port,String title) {
|
|
JSONObject json=new JSONObject();
|
|
try {
|
|
NasAdminAddress address=new NasAdminAddress();
|
|
address.setUrl(url);
|
|
address.setPort(Integer.parseInt(port));
|
|
address.setTitle(title);
|
|
adminAddressDao.insert(address);
|
|
json.put("code",0);
|
|
json.put("msg","ok");
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
json.put("code",-1);
|
|
json.put("msg",e.getMessage());
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/update.do",method = RequestMethod.POST)
|
|
public String updateAddress(HttpServletRequest request,String url,String port,String title,String id){
|
|
JSONObject json=new JSONObject();
|
|
try {
|
|
NasAdminAddress address=adminAddressDao.selectByPrimaryKey(Integer.parseInt(id));
|
|
if(address!=null) {
|
|
if (!StringUtils.isEmpty(url)) {
|
|
address.setUrl(url);
|
|
}
|
|
if (!StringUtils.isEmpty(port)) {
|
|
address.setPort(Integer.parseInt(port));
|
|
}
|
|
if (!StringUtils.isEmpty(title)) {
|
|
address.setTitle(title);
|
|
}
|
|
adminAddressDao.updateByPrimaryKey(address);
|
|
json.put("code",0);
|
|
json.put("msg","ok");
|
|
}else {
|
|
json.put("code",1);
|
|
json.put("msg","无更新");
|
|
}
|
|
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
json.put("code",-1);
|
|
json.put("msg",e.getMessage());
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/remove.do",method = RequestMethod.POST)
|
|
public String removeAddress(HttpServletRequest request,String id){
|
|
JSONObject json=new JSONObject();
|
|
try{
|
|
int code=adminAddressDao.deleteByPrimaryKey(Integer.parseInt(id));
|
|
json.put("code",code);
|
|
json.put("msg","ok");
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
json.put("code",-1);
|
|
json.put("msg",e.getMessage());
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/auth/nas/address/set.do",method = RequestMethod.POST)
|
|
public String setAddress(HttpServletRequest request,String id){
|
|
JSONObject json=new JSONObject();
|
|
try {
|
|
NasAdminAddress address=adminAddressDao.selectByPrimaryKey(Integer.parseInt(id));
|
|
if(address!=null){
|
|
RedisTools.set("adminAddress",JSONObject.toJSONString(address));
|
|
}
|
|
json.put("code",0);
|
|
json.put("msg","ok");
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
json.put("code",-1);
|
|
json.put("msg",e.getMessage());
|
|
}
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping(value = "/jellyfin.do")
|
|
public void jellyfin(HttpServletResponse response){
|
|
try {
|
|
response.sendRedirect("http://"+UpdateIp.nas_ip+":8096");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@RequestMapping("/nas/music/getlocalhost.do")
|
|
@ResponseBody
|
|
public String getLocalHost() {
|
|
JSONObject json = new JSONObject();
|
|
if("dev".equals(ConfigTools.load(ConfigTools.CONFIG, "model"))){
|
|
json.put("data", NasUrl+":8001");
|
|
}else {
|
|
if(UpdateIp.nas_ip==null) {
|
|
json.put("data", "http://yutou233.cn:8001");
|
|
}else {
|
|
json.put("data", String.format("http://%s:8000", UpdateIp.nas_ip));
|
|
}
|
|
}
|
|
json.put("code", 0);
|
|
return json.toJSONString();
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping("/nas/music/share.do")
|
|
public JSONObject share(String file){
|
|
JSONObject json=new JSONObject();
|
|
String token= Tools.getMD5(UUID.randomUUID() +file);
|
|
json.put("token",token);
|
|
json.put("file",file);
|
|
HashMap<String,String> header=new HashMap<>();
|
|
header.put("content-type","application/json");
|
|
String data=HttpTools.http_post(NasUrl+":8001/nas/music/share.do",json.toJSONString().getBytes(StandardCharsets.UTF_8),1,header);
|
|
System.out.println("分享:"+data);
|
|
JSONObject _data=JSONObject.parseObject(data);
|
|
RedisTools.set(token,data,3600);
|
|
System.out.println("设置分享token:"+token+" -> "+data);
|
|
_data.put("token",token);
|
|
json.clear();
|
|
json.put("code",0);
|
|
json.put("msg","ok");
|
|
json.put("data",_data);
|
|
return json;
|
|
}
|
|
@ResponseBody
|
|
@RequestMapping("/nas/music/playShare.do")
|
|
public JSONObject playShare(String share){
|
|
JSONObject json=new JSONObject();
|
|
String redis=RedisTools.get(share);
|
|
if(redis!=null&&!"-999".equals(redis)) {
|
|
String _json=HttpTools.get(NasUrl+":8001/nas/music/playShare.do?token="+JSONObject.parseObject(redis).getJSONObject("data").getString("share"));
|
|
System.out.println(_json);
|
|
JSONObject item=JSONObject.parseObject(_json);
|
|
if(item.getInteger("code")==0) {
|
|
json.put("code", 0);
|
|
json.put("data", item.getJSONObject("data").getString("file"));
|
|
}else{
|
|
json.put("code","-1");
|
|
json.put("msg","分享已过期");
|
|
}
|
|
}else{
|
|
json.put("code","-2");
|
|
json.put("msg","连接错误");
|
|
}
|
|
return json;
|
|
}
|
|
}
|