mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-20 21:49:16 +00:00

* feat: implement a file streamer for file share Only server with hardcoded file path * bump valibot version * feat: add server-info gRPC module to serve server info * feat: add ssl cert and public key to peers state When peer is online, KK always have know its cert and pub key for future secure communication * feat: add grpc ts package * Enable "/refresh-worker-extension" rest API, grpc version isn't ready yet * update pnpm lock * ci: fix CI by moving protobuf install order * ci: fix * upgrade api due to valibot incompatibility * fix: use fs instead of bun shell to be compatible with windows * skip grpc pkg build on windows * feat: local network file transfer prototype working * fix: grpc build.ts * download next to 14 * ci: add ci env try to fix next * fix: hideRefreshBtn and a few other btns' hide API in iframe ext page * feat: disable NODE_TLS_REJECT_UNAUTHORIZED for extension HMR refresh * fix: manifest json schema with objectWithRest to allow any other fields in package.json * chore: update valibot and related dependencies to version 1.0.0-beta.9 in pnpm-lock.yaml * ci: add protobuf compiler installation to manifest-schema-upload workflow * refactor: move grpc code from jarvis to a separate grpc crate for easier testing * feat(file-transfer): POC multi file + directory file transfer * feat(file-transfer): replace file transfer recursive download in ts with rust * feat(file-transfer): implement on_progress event for file transfer * feat(file-transfer): report progress every 1MB instead of 100 iterations * feat(file-transfer): add progress bar * feat(file-transfer): UI * feat(file-transfer): add file transfer bucket info preview Show total size and number of files * feat(file-transfer): improve UX Show bucket info during confirm; improve progress bar UI, prevent inconsistent width * feat(grpc): skip build in Cloudflare Pages due to missing protoc * refactor: with cargo fix, unused imports removed * ci: debug cloudflare pages env var * fix(grpc): update environment variable access for Cloudflare Pages build check * fix(grpc): add error handling for protoc command in build script * chore: update kkrpc version to 0.0.13, remove kkrpc submodule, and enhance grpc build script logging - Updated kkrpc dependency version from 0.0.12 to 0.0.13 in package.json. - Removed the kkrpc submodule from the project. - Enhanced logging in the grpc build script to include additional Cloudflare Pages environment variables for better debugging. * fix(api): typescript error, remove base.json from tsconfig * chore: update pnpm lock * fix(api): update TypeScript configuration to extend base.json and clean up unused options * refactor(api): update TypeScript configuration to extend path-alias.json and enhance compiler options * fix(api): restore KunkunManifestPermission in PermissionUnion and update valibot import in schema tests * fix: missing trait error * fix: js require replaced with import * test: fix a unit test with a more robust method --------- Co-authored-by: Huakun Shen <huaukun.shen@huakunshen.com>
56 lines
1.6 KiB
Rust
56 lines
1.6 KiB
Rust
#![cfg(target_os = "macos")]
|
|
|
|
use localauthentication_rs::{LAPolicy, LocalAuthentication};
|
|
use objc::runtime::{BOOL, YES};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[link(name = "CoreGraphics", kind = "framework")]
|
|
extern "C" {
|
|
fn CGRequestScreenCaptureAccess() -> BOOL;
|
|
fn CGPreflightScreenCaptureAccess() -> BOOL;
|
|
}
|
|
|
|
pub fn request_screen_capture_access() -> bool {
|
|
unsafe {
|
|
let result: BOOL = CGRequestScreenCaptureAccess();
|
|
result == YES
|
|
}
|
|
}
|
|
|
|
/// Check if we already have screen capture access
|
|
/// Returns true if we have access, false otherwise
|
|
pub fn preflight_screen_capture_access() -> bool {
|
|
unsafe {
|
|
let result: BOOL = CGPreflightScreenCaptureAccess();
|
|
result == YES
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum AuthPolicy {
|
|
Any,
|
|
Biometrics,
|
|
Watch,
|
|
BiometricsOrWatch,
|
|
}
|
|
|
|
pub fn verify_auth(policy: AuthPolicy) -> bool {
|
|
let local_authentication = LocalAuthentication::new();
|
|
|
|
// Try to authenticate the user
|
|
let authenticated = local_authentication.evaluate_policy(
|
|
// LAPolicy::DeviceOwnerAuthenticationWithBiometrics,
|
|
match policy {
|
|
AuthPolicy::Any => LAPolicy::DeviceOwnerAuthentication,
|
|
AuthPolicy::Biometrics => LAPolicy::DeviceOwnerAuthenticationWithBiometrics,
|
|
AuthPolicy::Watch => LAPolicy::DeviceOwnerAuthenticationWithWatch,
|
|
AuthPolicy::BiometricsOrWatch => {
|
|
LAPolicy::DeviceOwnerAuthenticationWithBiometricsOrWatch
|
|
}
|
|
},
|
|
"authenticate your user",
|
|
);
|
|
|
|
authenticated
|
|
}
|