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
sc config LanmanServer start= disabled
echo N | net stop LanmanServer
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
cd resources\assets\script
msiexec /i winfsp.msi /quiet /qn INSTALLLEVEL=1000
\ 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
SetRegView 64
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files\test-e"
......
......@@ -120,6 +120,7 @@
"electron-traywindow-positioner": "^1.1.1",
"electron-updater": "^5.2.1",
"express": "^4.18.2",
"fs-extra": "^11.1.0",
"history": "^5.3.0",
"qs": "^6.11.0",
"react": "^18.2.0",
......@@ -237,7 +238,7 @@
]
},
"nsis": {
"include": "",
"include": "build/installer.nsh",
"oneClick": false,
"perMachine": true,
"allowElevation": true,
......
......@@ -76,8 +76,8 @@ export default () => {
});
};
const ipcSend = (type: string) => {
electron.ipcRenderer.send(type);
const ipcSend = (type: string, data: any) => {
electron.ipcRenderer.send(type, data);
};
const render = (dom: any) => {
......
......@@ -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 = () => {
let localUtc = new Date().getTimezoneOffset() / 60;
let Rounding = parseInt(localUtc);
......
......@@ -18,6 +18,7 @@ const nativeImage = require('electron').nativeImage;
const positioner = require('electron-traywindow-positioner');
const storage = require('electron-localstorage');
const fs = require('fs');
const fse = require('fs-extra');
class AppUpdater {
constructor() {
log.transports.file.level = 'info';
......@@ -53,15 +54,19 @@ if (isMac) {
}
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();
if (!gotTheLock) {
app.quit();
}
app.setLoginItemSettings({
openAtLogin: storage.getItem('Preferences')
? JSON.parse(storage.getItem('Preferences'))['selfStart']
: true,
openAtLogin:
storage.getItem('Preferences') &&
JSON.parse(storage.getItem('Preferences'))['selfStart'],
openAsHidden: false,
path: process.execPath,
args: [],
......@@ -137,24 +142,18 @@ ipcMain.on('resize-home', (event) => {
ipcMain.on('asynchronous-message', function (event, 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(
USER_HOME + 'roco.json',
JSON.stringify(arg),
'utf8',
(err: any) => {
if (err) {
event.sender.send('asynchronous-reply', '写入失败');
} else {
event.sender.send('asynchronous-reply', '写入成功');
}
fs.writeFile(
USER_HOME + 'roco.json',
JSON.stringify(arg),
'utf8',
(err: any) => {
if (err) {
event.sender.send('asynchronous-reply', '写入失败');
} else {
event.sender.send('asynchronous-reply', '写入成功');
}
);
});
}
);
});
ipcMain.on('window-close', (event) => {
......@@ -248,6 +247,20 @@ const createWindow = async () => {
mainWindow.loadURL(resolveHtmlPath('index.html'));
// 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', () => {
if (!mainWindow) {
throw new Error('"mainWindow" is not defined');
......
......@@ -3,8 +3,9 @@ import { shell } from 'electron';
//js
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 { BACKEND_API_URI_PREFIX } from '../../commons/utils/api_address';
//ui
import TextField from '@mui/material/TextField';
......@@ -110,7 +111,12 @@ export default (props) => {
case '1':
return;
case '2':
ipcSend('asynchronous-message', '11111');
return;
case '3':
ipcSend(
'asynchronous-message',
'3333333333333333333333333333333'
);
return;
case '4':
let Token =
......
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';
import public from 'commons/public';
import Head from '../components/head';
import Trans from '../components/trans';
import Tab from '../components/tab';
import BottomTip from '../components/buttomTip.jsx';
import Message from '../components/message.jsx';
import { getUserInfo } from 'commons/utils/publicMethod';
import { Button, Grid } from '@mui/material';
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) => {
return {
initBody: {
......@@ -28,6 +32,21 @@ export default (props) => {
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 (
<Grid className={classes.initBody}>
<Head />
......
......@@ -9,7 +9,8 @@ import qs from 'qs';
import { Constants } from '../../commons/utils/constants';
import Axios from '../../commons/axios/Axios';
import { userInfo } from '../../commons/utils/ajaxOption';
import { getUserToken, getUserInfo } from '../../commons/utils/publicMethod';
import { BACKEND_API_URI_PREFIX } from '../../commons/utils/api_address';
//ui
import TextField from '@mui/material/TextField';
import { Button, Grid } from '@mui/material';
......@@ -17,6 +18,15 @@ import logo from '../../commons/assets/img/logo.svg';
import FormControlLabel from '@mui/material/FormControlLabel';
import Checkbox from '@mui/material/Checkbox';
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) => {
return {
......@@ -55,7 +65,7 @@ const useStyles = makeStyles()((theme) => {
export default (props) => {
const { classes } = useStyles();
const { render, navigate, setMessages, ipcSend } = public();
const { render, navigate, setMessages, ipcSend, setOnloading } = public();
const [username, setUsername] = useState('');
const [usernameError, setUsernameError] = useState(false);
......@@ -73,6 +83,7 @@ export default (props) => {
'Preferences',
JSON.stringify({ selfStart: true })
);
ipcSend('openAtLogin-true');
}
}, []);
......@@ -84,7 +95,7 @@ export default (props) => {
setPasswordError(true);
return;
}
// setOnloading(true)
const options = {
method: 'post',
url: API.API_USER_LOGIN,
......@@ -128,8 +139,28 @@ export default (props) => {
Constants.USER_INFO_TOKEN_KEY,
JSON.stringify(data.res)
);
navigate('/home');
ipcSend('resize-home');
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');
ipcSend('resize-home');
}
});
});
} else {
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