mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
✨ feat(ck): 成功获取 ck,只需两步确认
Co-authored-by: Moke <jerry765@users.noreply.github.com>
This commit is contained in:
810
src-tauri/Cargo.lock
generated
810
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@ edition = "2021"
|
||||
tauri-build = { version = "1.2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
rocket = "0.5.0-rc.1"
|
||||
tauri = { version = "1.2", features = ["api-all"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
|
||||
@@ -1,6 +1,49 @@
|
||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
// Tauri
|
||||
use tauri::{AppHandle, Manager, WindowBuilder, WindowUrl};
|
||||
// Rocket
|
||||
use rocket::fairing::{Fairing, Info, Kind};
|
||||
use rocket::http::Header;
|
||||
use rocket::{Request, Response};
|
||||
|
||||
#[macro_use]
|
||||
extern crate rocket;
|
||||
|
||||
static mut COOKIE: String = String::new();
|
||||
|
||||
// Rocket 接受 get 请求,发来的 cookie 会被打印在控制台
|
||||
#[rocket::get("/login?<cookie>")]
|
||||
fn emit_cookie(cookie: String) -> String {
|
||||
unsafe {
|
||||
COOKIE = cookie.parse().unwrap();
|
||||
}
|
||||
cookie
|
||||
}
|
||||
|
||||
pub struct Cors;
|
||||
|
||||
#[rocket::async_trait]
|
||||
impl Fairing for Cors {
|
||||
fn info(&self) -> Info {
|
||||
Info {
|
||||
name: "Cross-Origin-Resource-Sharing Fairing",
|
||||
kind: Kind::Response,
|
||||
}
|
||||
}
|
||||
|
||||
async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) {
|
||||
response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
|
||||
response.set_header(Header::new(
|
||||
"Access-Control-Allow-Methods",
|
||||
"POST, PATCH, PUT, DELETE, HEAD, OPTIONS, GET",
|
||||
));
|
||||
response.set_header(Header::new("Access-Control-Allow-Headers", "*"));
|
||||
response.set_header(Header::new("Access-Control-Allow-Credentials", "true"));
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
async fn mys_login(handle: AppHandle) {
|
||||
// 创建新窗口
|
||||
@@ -13,22 +56,32 @@ async fn mys_login(handle: AppHandle) {
|
||||
.unwrap();
|
||||
// 执行 js 代码
|
||||
let js_code = "
|
||||
var cookie = document.cookie;
|
||||
const cookie = document.cookie;
|
||||
if(cookie == null || cookie == ''){
|
||||
alert('请在该网页登录后关闭窗口再试');
|
||||
} else {
|
||||
prompt('请复制以下内容', `mys-login:${cookie}`);
|
||||
fetch('http://localhost:8000/login?cookie=' + cookie);
|
||||
alert('成功获取 cookie!请关闭窗口');
|
||||
}
|
||||
";
|
||||
mys_window.eval(js_code).ok().unwrap();
|
||||
}
|
||||
|
||||
use tauri::{AppHandle, Manager, WindowBuilder, WindowUrl};
|
||||
#[tauri::command]
|
||||
fn read_cookie() -> String {
|
||||
unsafe { COOKIE.clone() }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
tauri::Builder::default()
|
||||
.invoke_handler(tauri::generate_handler![mys_login])
|
||||
.invoke_handler(tauri::generate_handler![mys_login, read_cookie])
|
||||
.setup(|app| {
|
||||
tauri::async_runtime::spawn(
|
||||
rocket::build()
|
||||
.attach(Cors)
|
||||
.mount("/", routes![emit_cookie])
|
||||
.launch(),
|
||||
);
|
||||
#[cfg(debug_assertions)] // only include this code on debug builds
|
||||
{
|
||||
let window = app.get_window("tauri-genshin").unwrap();
|
||||
|
||||
@@ -98,10 +98,21 @@
|
||||
</v-btn>
|
||||
</template>
|
||||
</v-list-item>
|
||||
<v-list-item title="获取Cookie" @click="tryConfirm('getCookie')">
|
||||
<v-list-item>
|
||||
<template #prepend>
|
||||
<v-icon>mdi-cookie</v-icon>
|
||||
</template>
|
||||
<v-list-item-title style="cursor: pointer;" @click="tryConfirm('getCookie')">
|
||||
重新获取 Cookie
|
||||
</v-list-item-title>
|
||||
<template #append>
|
||||
<v-btn class="card-btn" @click="readCookie()">
|
||||
<template #prepend>
|
||||
<img src="../assets/icons/circle-check.svg" alt="check">
|
||||
查看 Cookie
|
||||
</template>
|
||||
</v-btn>
|
||||
</template>
|
||||
</v-list-item>
|
||||
<v-list-subheader inset class="config-header">
|
||||
路径
|
||||
@@ -219,6 +230,11 @@ function tryConfirm (oper: string) {
|
||||
confirmOper.value = "getCookie";
|
||||
confirmShow.value = true;
|
||||
break;
|
||||
case "readCookie":
|
||||
confirmText.value = "请确认已经获取到Cookie。";
|
||||
confirmOper.value = "readCookie";
|
||||
confirmShow.value = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,10 +248,14 @@ async function doConfirm (oper: string) {
|
||||
await delUserData();
|
||||
break;
|
||||
case "delApp":
|
||||
await initAppData();
|
||||
initAppData();
|
||||
break;
|
||||
case "getCookie":
|
||||
await getCookie();
|
||||
await tauri.invoke("mys_login");
|
||||
tryConfirm("readCookie");
|
||||
break;
|
||||
case "readCookie":
|
||||
await readCookie();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -267,15 +287,15 @@ async function delUserData () {
|
||||
});
|
||||
snackbarText.value = "用户数据已删除!";
|
||||
snackbar.value = true;
|
||||
await achievementsStore.init();
|
||||
achievementsStore.init();
|
||||
await fs.createDir("userData", { dir: fs.BaseDirectory.AppLocalData });
|
||||
await fs.createDir("tempData", { dir: fs.BaseDirectory.AppLocalData });
|
||||
}
|
||||
|
||||
// 恢复默认配置
|
||||
async function initAppData () {
|
||||
await homeStore.init();
|
||||
await achievementsStore.init();
|
||||
function initAppData () {
|
||||
homeStore.init();
|
||||
achievementsStore.init();
|
||||
snackbarText.value = "已恢复默认配置!";
|
||||
snackbar.value = true;
|
||||
setTimeout(() => {
|
||||
@@ -284,15 +304,14 @@ async function initAppData () {
|
||||
}
|
||||
|
||||
// 开启 dev 模式
|
||||
async function submitDevMode () {
|
||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||
function submitDevMode () {
|
||||
appStore.devMode ? (snackbarText.value = "已开启 dev 模式!") : (snackbarText.value = "已关闭 dev 模式!");
|
||||
snackbarColor.value = "success";
|
||||
snackbar.value = true;
|
||||
}
|
||||
|
||||
// 修改首页显示
|
||||
async function submitHome () {
|
||||
function submitHome () {
|
||||
// 获取已选
|
||||
const show = showHome.value;
|
||||
if (show.length < 1) {
|
||||
@@ -309,8 +328,9 @@ async function submitHome () {
|
||||
}
|
||||
|
||||
// 获取 Cookie
|
||||
async function getCookie () {
|
||||
await tauri.invoke("mys_login");
|
||||
async function readCookie () {
|
||||
const cookie = await tauri.invoke("read_cookie");
|
||||
alert(cookie);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user