const express = require('express');
const fs = require('fs');
const path = require('path');
const cors = require('cors');
const bodyParser = require('body-parser');

const app = express();
const port = 3000; // 可以根据需要修改端口号
app.use(cors());

app.use(bodyParser.json());

// window系统下创建快捷方式接口
app.post('/createShortcut', (req, res) => {
  // folderPath：存放的路径 shortcutName： 快捷方式名称 shortcutURL： 快捷方式的访问地址
  const { folderPath, shortcutName, shortcutURL } = req.body;

  // 检查是否缺少任何一个值
  if (!folderPath || !shortcutName || !shortcutURL) {
    return res.status(400).send('少了参数！');
  }

  // 创建文件夹（如果不存在）
  if (!fs.existsSync(folderPath)) {
    fs.mkdirSync(folderPath, { recursive: true });
  }

  // window下用.url
  // const shortcutFilePath = path.join(folderPath, `${shortcutName}.url`);
  // linux中用.desktop
  const shortcutFilePath = path.join(folderPath, `${shortcutName}.desktop`);

  // 删除旧的快捷方式文件（如果存在）
  if (fs.existsSync(shortcutFilePath)) {
    fs.unlinkSync(shortcutFilePath);
  }

  // window下创建快捷方式
  // const shortcutFolderPath = path.join(folderPath, shortcutName + '.url');
  // const shortcutFileContent = `[InternetShortcut]\nURL=${shortcutURL}`;

  // linux下创建快捷方式
  const shortcutFolderPath = path.join(folderPath, `${shortcutName}.desktop`);
  // const shortcutFileContent = `[Desktop Entry]
  //   Type=Application
  //   Name=${shortcutName}
  //   Exec=/usr/bin/chromium-browser ${shortcutURL}
  //   Icon=/usr/share/icons/hicolor/48x48/apps/chromium-browser.png`;
 
  // arm 下用火狐打开
  const shortcutFileContent = `[Desktop Entry]
    Type=Application
    Name=${shortcutName}
    Exec=sudo /usr/bin/firefox-esr ${shortcutURL}
    Icon=/usr/share/icons/hicolor/48x48/apps/firefox-esr.png`;

  try {
    fs.writeFileSync(shortcutFolderPath, shortcutFileContent);
    // 设置文件权限为可执行  0o755 表示 rwxr-xr-x 权限，即所有者可读写执行，其他用户可读执行
    fs.chmodSync(shortcutFolderPath, 0o755);
    res.status(200).send('安装成功！');
  } catch (err) {
    console.error(err);
    res.status(500).send('安装失败！');
  }

});

// 运行项目 需要进入到当前的文件夹目录打开终端 执行 node nodeService.js 
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});