Commit 14c2a16c authored by rocosen's avatar rocosen

Merge branch 'release'

parents 74ae3916 ec9da2bf
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
chcp 65001 cd resources\assets\script
sc config LanmanServer start= disabled msiexec /i winfsp.msi /quiet /qn INSTALLLEVEL=1000
echo N | net stop LanmanServer \ No newline at end of file
sc config iphlpsvc start= auto
start "" /w /B "%cd%\resources\assets\exe\devcon.exe" /install %windir%\inf\netloop.inf *msloop
powershell -Command "$interfaces = Get-WmiObject Win32_NetworkAdapter;$interfaces | foreach {$friendlyname = $_ | Select-Object -ExpandProperty NetConnectionID;$name = $_ | Select-Object -ExpandProperty Name;$friendlyname | Out-File -Encoding utf8 aa.txt;}
set /p netname=<aa.txt
echo %netname%
netsh interface ip add address "%netname%" 1.10.0.1 255.255.255.0
netsh interface ip add address "%netname%" 1.10.1.1 255.255.255.0
netsh interface portproxy add v4tov4 listenport=445 listenaddress=1.10.0.1 connectaddress=47.93.217.126 connectport=4555
netsh interface portproxy add v4tov4 listenport=445 listenaddress=1.10.1.1 connectaddress=180.76.134.227 connectport=4555
md C:\test
mklink /D c:\test\aliyun \\1.10.0.1\ali\1b520eb8a56147299ad803f9f87b6297
mklink /D c:\test\baiduyun \\1.10.1.1\data\1b520eb8a56147299ad803f9f87b6297
\ No newline at end of file
@echo off
net use \\1.10.0.1\ali\1b520eb8a56147299ad803f9f87b6297 123456 /user:cloudam /persistent:yes
net use \\1.10.1.1\data\1b520eb8a56147299ad803f9f87b6297 123456 /user:cloudam /persistent:yes
subst Z: C:\test
\ No newline at end of file
!include nsDialogs.nsh
XPStyle on
Var Dialog
Page custom myCustomPage
Function myCustomPage
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
SetRebootFlag true
IfRebootFlag 0 +2
FunctionEnd
!macro preInit !macro preInit
SetRegView 64 SetRegView 64
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files\test-e" WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files\test-e"
......
...@@ -120,6 +120,7 @@ ...@@ -120,6 +120,7 @@
"electron-traywindow-positioner": "^1.1.1", "electron-traywindow-positioner": "^1.1.1",
"electron-updater": "^5.2.1", "electron-updater": "^5.2.1",
"express": "^4.18.2", "express": "^4.18.2",
"fs-extra": "^11.1.0",
"history": "^5.3.0", "history": "^5.3.0",
"qs": "^6.11.0", "qs": "^6.11.0",
"react": "^18.2.0", "react": "^18.2.0",
...@@ -237,7 +238,7 @@ ...@@ -237,7 +238,7 @@
] ]
}, },
"nsis": { "nsis": {
"include": "", "include": "build/installer.nsh",
"oneClick": false, "oneClick": false,
"perMachine": true, "perMachine": true,
"allowElevation": true, "allowElevation": true,
......
...@@ -76,8 +76,8 @@ export default () => { ...@@ -76,8 +76,8 @@ export default () => {
}); });
}; };
const ipcSend = (type: string) => { const ipcSend = (type: string, data: any) => {
electron.ipcRenderer.send(type); electron.ipcRenderer.send(type, data);
}; };
const render = (dom: any) => { const render = (dom: any) => {
......
...@@ -8,6 +8,13 @@ export const getUserInfo = () => { ...@@ -8,6 +8,13 @@ export const getUserInfo = () => {
); );
}; };
export const getUserToken = () => {
return (
localStorage.getItem(Constants.TOKEN_KEY) &&
JSON.parse(localStorage.getItem(Constants.TOKEN_KEY))
);
};
export const getCurrentZone = () => { export const getCurrentZone = () => {
let localUtc = new Date().getTimezoneOffset() / 60; let localUtc = new Date().getTimezoneOffset() / 60;
let Rounding = parseInt(localUtc); let Rounding = parseInt(localUtc);
......
...@@ -18,6 +18,7 @@ const nativeImage = require('electron').nativeImage; ...@@ -18,6 +18,7 @@ const nativeImage = require('electron').nativeImage;
const positioner = require('electron-traywindow-positioner'); const positioner = require('electron-traywindow-positioner');
const storage = require('electron-localstorage'); const storage = require('electron-localstorage');
const fs = require('fs'); const fs = require('fs');
const fse = require('fs-extra');
class AppUpdater { class AppUpdater {
constructor() { constructor() {
log.transports.file.level = 'info'; log.transports.file.level = 'info';
...@@ -53,15 +54,19 @@ if (isMac) { ...@@ -53,15 +54,19 @@ if (isMac) {
} }
Menu.setApplicationMenu(null); Menu.setApplicationMenu(null);
const USER_HOME = isMac
? (process.env.HOME || process.env.USERPROFILE) + '/bkunyun/'
: (process.env.HOME || process.env.USERPROFILE) + '/.bkunyun/';
const gotTheLock = app.requestSingleInstanceLock(); const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) { if (!gotTheLock) {
app.quit(); app.quit();
} }
app.setLoginItemSettings({ app.setLoginItemSettings({
openAtLogin: storage.getItem('Preferences') openAtLogin:
? JSON.parse(storage.getItem('Preferences'))['selfStart'] storage.getItem('Preferences') &&
: true, JSON.parse(storage.getItem('Preferences'))['selfStart'],
openAsHidden: false, openAsHidden: false,
path: process.execPath, path: process.execPath,
args: [], args: [],
...@@ -137,11 +142,6 @@ ipcMain.on('resize-home', (event) => { ...@@ -137,11 +142,6 @@ ipcMain.on('resize-home', (event) => {
ipcMain.on('asynchronous-message', function (event, arg) { ipcMain.on('asynchronous-message', function (event, arg) {
// arg是从渲染进程返回来的数据 // arg是从渲染进程返回来的数据
const USER_HOME = isMac
? (process.env.HOME || process.env.USERPROFILE) + '/bkunyun/'
: (process.env.HOME || process.env.USERPROFILE) + '/.bkunyun/';
fs.mkdir(USER_HOME, { recursive: true }, (err: any) => {
if (err) return;
fs.writeFile( fs.writeFile(
USER_HOME + 'roco.json', USER_HOME + 'roco.json',
JSON.stringify(arg), JSON.stringify(arg),
...@@ -154,7 +154,6 @@ ipcMain.on('asynchronous-message', function (event, arg) { ...@@ -154,7 +154,6 @@ ipcMain.on('asynchronous-message', function (event, arg) {
} }
} }
); );
});
}); });
ipcMain.on('window-close', (event) => { ipcMain.on('window-close', (event) => {
...@@ -248,6 +247,20 @@ const createWindow = async () => { ...@@ -248,6 +247,20 @@ const createWindow = async () => {
mainWindow.loadURL(resolveHtmlPath('index.html')); mainWindow.loadURL(resolveHtmlPath('index.html'));
// mainWindow.webContents.openDevTools(); // mainWindow.webContents.openDevTools();
fs.mkdir(USER_HOME, { recursive: true }, (err: any) => {
if (err) return;
async function copyFiles() {
try {
await fse.copy(getAssetPath('/script'), USER_HOME);
console.log('success!');
} catch (err) {
console.error(err);
}
}
copyFiles();
});
mainWindow.once('ready-to-show', () => { mainWindow.once('ready-to-show', () => {
if (!mainWindow) { if (!mainWindow) {
throw new Error('"mainWindow" is not defined'); throw new Error('"mainWindow" is not defined');
......
...@@ -3,8 +3,9 @@ import { shell } from 'electron'; ...@@ -3,8 +3,9 @@ import { shell } from 'electron';
//js //js
import public from 'commons/public'; import public from 'commons/public';
import { getUserInfo } from '../../commons/utils/publicMethod'; import { getUserInfo, getUserToken } from '../../commons/utils/publicMethod';
import { Constants } from '../../commons/utils/constants'; import { Constants } from '../../commons/utils/constants';
import { BACKEND_API_URI_PREFIX } from '../../commons/utils/api_address';
//ui //ui
import TextField from '@mui/material/TextField'; import TextField from '@mui/material/TextField';
...@@ -110,7 +111,12 @@ export default (props) => { ...@@ -110,7 +111,12 @@ export default (props) => {
case '1': case '1':
return; return;
case '2': case '2':
ipcSend('asynchronous-message', '11111'); return;
case '3':
ipcSend(
'asynchronous-message',
'3333333333333333333333333333333'
);
return; return;
case '4': case '4':
let Token = let Token =
......
import React, { useState } from 'react'; import React, { useEffect, useState } from 'react';
import public from 'commons/public'; import public from 'commons/public';
import Head from '../components/head'; import Head from '../components/head';
import Trans from '../components/trans'; import Trans from '../components/trans';
import Tab from '../components/tab'; import Tab from '../components/tab';
import BottomTip from '../components/buttomTip.jsx'; import BottomTip from '../components/buttomTip.jsx';
import Message from '../components/message.jsx'; import Message from '../components/message.jsx';
import { getUserInfo } from 'commons/utils/publicMethod';
import { Button, Grid } from '@mui/material'; import { Button, Grid } from '@mui/material';
import { makeStyles } from 'tss-react/mui'; import { makeStyles } from 'tss-react/mui';
const fs = require('fs');
const rootPath = require('electron-root-path').rootPath;
const { shell } = require('electron');
const useStyles = makeStyles()((theme) => { const useStyles = makeStyles()((theme) => {
return { return {
initBody: { initBody: {
...@@ -28,6 +32,21 @@ export default (props) => { ...@@ -28,6 +32,21 @@ export default (props) => {
setValue(newValue); setValue(newValue);
}; };
useEffect(() => {
const batDir =
(process.env.HOME || process.env.USERPROFILE) + '/.bkunyun/';
let batOutDir = batDir.replace(/\\/g, '/');
let srt = ` @echo off\ncloudam.exe mount ${
getUserInfo().homeDirectoryMountPoint
}:/ T: --file-perms=0777 --dir-perms=0777 --vfs-cache-mode=full --max-depth=1 --low-level-retries=2 --volname="Cloudam Drive" --human-readable --vfs-cache-poll-interval=0 --poll-interval=1m --vfs-read-chunk-size=20M --buffer-size=0 --vfs-fast-fingerprint --no-modtime --transfers=8 --cache-dir=~\\AppData\\Local\\cloudam`;
fs.writeFile(batOutDir + 'mount.bat', srt, 'utf8', (err) => {
if (err) {
} else {
shell.openPath(batOutDir + 'start.vbs');
}
});
}, []);
return ( return (
<Grid className={classes.initBody}> <Grid className={classes.initBody}>
<Head /> <Head />
......
...@@ -9,7 +9,8 @@ import qs from 'qs'; ...@@ -9,7 +9,8 @@ import qs from 'qs';
import { Constants } from '../../commons/utils/constants'; import { Constants } from '../../commons/utils/constants';
import Axios from '../../commons/axios/Axios'; import Axios from '../../commons/axios/Axios';
import { userInfo } from '../../commons/utils/ajaxOption'; import { userInfo } from '../../commons/utils/ajaxOption';
import { getUserToken, getUserInfo } from '../../commons/utils/publicMethod';
import { BACKEND_API_URI_PREFIX } from '../../commons/utils/api_address';
//ui //ui
import TextField from '@mui/material/TextField'; import TextField from '@mui/material/TextField';
import { Button, Grid } from '@mui/material'; import { Button, Grid } from '@mui/material';
...@@ -17,6 +18,15 @@ import logo from '../../commons/assets/img/logo.svg'; ...@@ -17,6 +18,15 @@ import logo from '../../commons/assets/img/logo.svg';
import FormControlLabel from '@mui/material/FormControlLabel'; import FormControlLabel from '@mui/material/FormControlLabel';
import Checkbox from '@mui/material/Checkbox'; import Checkbox from '@mui/material/Checkbox';
import { makeStyles } from 'tss-react/mui'; import { makeStyles } from 'tss-react/mui';
import path from 'path';
const fs = require('fs');
const rootPath = require('electron-root-path').rootPath;
const { shell } = require('electron');
// const location = path.join(
// rootPath.substring(0, rootPath.length - 8),
// './assets/script/start.vbs'
// );
const useStyles = makeStyles()((theme) => { const useStyles = makeStyles()((theme) => {
return { return {
...@@ -55,7 +65,7 @@ const useStyles = makeStyles()((theme) => { ...@@ -55,7 +65,7 @@ const useStyles = makeStyles()((theme) => {
export default (props) => { export default (props) => {
const { classes } = useStyles(); const { classes } = useStyles();
const { render, navigate, setMessages, ipcSend } = public(); const { render, navigate, setMessages, ipcSend, setOnloading } = public();
const [username, setUsername] = useState(''); const [username, setUsername] = useState('');
const [usernameError, setUsernameError] = useState(false); const [usernameError, setUsernameError] = useState(false);
...@@ -73,6 +83,7 @@ export default (props) => { ...@@ -73,6 +83,7 @@ export default (props) => {
'Preferences', 'Preferences',
JSON.stringify({ selfStart: true }) JSON.stringify({ selfStart: true })
); );
ipcSend('openAtLogin-true');
} }
}, []); }, []);
...@@ -84,7 +95,7 @@ export default (props) => { ...@@ -84,7 +95,7 @@ export default (props) => {
setPasswordError(true); setPasswordError(true);
return; return;
} }
// setOnloading(true)
const options = { const options = {
method: 'post', method: 'post',
url: API.API_USER_LOGIN, url: API.API_USER_LOGIN,
...@@ -128,8 +139,28 @@ export default (props) => { ...@@ -128,8 +139,28 @@ export default (props) => {
Constants.USER_INFO_TOKEN_KEY, Constants.USER_INFO_TOKEN_KEY,
JSON.stringify(data.res) JSON.stringify(data.res)
); );
const dir =
(process.env.HOME || process.env.USERPROFILE) +
'/AppData/Roaming/rclone/';
let mountDir = dir.replace(/\\/g, '/');
fs.mkdir(mountDir, { recursive: true }, (err) => {
if (err) return;
let arg = `[${
data.res.homeDirectoryMountPoint
}]\ntype = cloudam\nurl = ${BACKEND_API_URI_PREFIX}/\nusername = ${
data.res.homeDirectoryMountPoint
}\nbearer_token = ${
getUserToken().access_token
}\nrefresh_token = ${getUserToken().refresh_token}
`;
fs.writeFile(mountDir + 'rclone.conf', arg, 'utf8', (err) => {
if (err) {
} else {
navigate('/home'); navigate('/home');
ipcSend('resize-home'); ipcSend('resize-home');
}
});
});
} else { } else {
ipcSend('openLogin-windown'); ipcSend('openLogin-windown');
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment