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