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;
}
}