rename to jocalsend
This commit is contained in:
parent
39e21b83b1
commit
29034e09d1
10 changed files with 29 additions and 29 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -1150,7 +1150,7 @@ dependencies = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "joecalsend"
|
name = "jocalsend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[package]
|
[package]
|
||||||
name = "joecalsend"
|
name = "jocalsend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ use std::{collections::BTreeMap, net::SocketAddr, time::Duration};
|
||||||
|
|
||||||
use crossterm::event::{Event, EventStream, KeyCode, KeyEvent, KeyEventKind};
|
use crossterm::event::{Event, EventStream, KeyCode, KeyEvent, KeyEventKind};
|
||||||
use futures::{FutureExt, StreamExt};
|
use futures::{FutureExt, StreamExt};
|
||||||
use joecalsend::{JoecalService, ReceiveDialog, ReceiveRequest, TransferEvent, error::Result};
|
use jocalsend::{JocalService, ReceiveDialog, ReceiveRequest, TransferEvent, error::Result};
|
||||||
use julid::Julid;
|
use julid::Julid;
|
||||||
use log::{LevelFilter, debug, error, warn};
|
use log::{LevelFilter, debug, error, warn};
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
|
@ -23,7 +23,7 @@ pub struct Peer {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct App {
|
pub struct App {
|
||||||
pub service: JoecalService,
|
pub service: JocalService,
|
||||||
pub events: EventStream,
|
pub events: EventStream,
|
||||||
// addr -> (alias, fingerprint)
|
// addr -> (alias, fingerprint)
|
||||||
pub peers: Vec<Peer>,
|
pub peers: Vec<Peer>,
|
||||||
|
@ -56,7 +56,7 @@ pub enum SendingScreen {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl App {
|
impl App {
|
||||||
pub fn new(service: JoecalService, event_listener: UnboundedReceiver<TransferEvent>) -> Self {
|
pub fn new(service: JocalService, event_listener: UnboundedReceiver<TransferEvent>) -> Self {
|
||||||
App {
|
App {
|
||||||
service,
|
service,
|
||||||
event_listener,
|
event_listener,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::sync::LazyLock;
|
use std::sync::LazyLock;
|
||||||
|
|
||||||
use joecalsend::ReceiveRequest;
|
use jocalsend::ReceiveRequest;
|
||||||
use log::LevelFilter;
|
use log::LevelFilter;
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
buffer::Buffer,
|
buffer::Buffer,
|
||||||
|
@ -217,7 +217,7 @@ impl Widget for &mut App {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn outer_frame(screen: &CurrentScreen, menu: &Line, area: Rect, buf: &mut Buffer) {
|
fn outer_frame(screen: &CurrentScreen, menu: &Line, area: Rect, buf: &mut Buffer) {
|
||||||
let title = Line::from(" Joecalsend ".bold());
|
let title = Line::from(" Jocalsend ".bold());
|
||||||
let block = Block::bordered()
|
let block = Block::bordered()
|
||||||
.title(title.centered())
|
.title(title.centered())
|
||||||
.title_bottom(menu.clone().centered())
|
.title_bottom(menu.clone().centered())
|
||||||
|
@ -364,13 +364,13 @@ impl Widget for NetworkInfoWidget {
|
||||||
{
|
{
|
||||||
let udp = "UDP socket";
|
let udp = "UDP socket";
|
||||||
let udp = udp.to_line().left_aligned();
|
let udp = udp.to_line().left_aligned();
|
||||||
let uaddr = format!("{:?}", joecalsend::LISTENING_SOCKET_ADDR);
|
let uaddr = format!("{:?}", jocalsend::LISTENING_SOCKET_ADDR);
|
||||||
let udp = Row::new(vec![udp, uaddr.to_line().right_aligned()]).yellow();
|
let udp = Row::new(vec![udp, uaddr.to_line().right_aligned()]).yellow();
|
||||||
|
|
||||||
let mip = format!(
|
let mip = format!(
|
||||||
"{:?}:{:?}",
|
"{:?}:{:?}",
|
||||||
joecalsend::MULTICAST_IP,
|
jocalsend::MULTICAST_IP,
|
||||||
joecalsend::DEFAULT_PORT
|
jocalsend::DEFAULT_PORT
|
||||||
);
|
);
|
||||||
let multicast = "Multicast address";
|
let multicast = "Multicast address";
|
||||||
let multicast = Row::new(vec![
|
let multicast = Row::new(vec![
|
||||||
|
@ -379,7 +379,7 @@ impl Widget for NetworkInfoWidget {
|
||||||
])
|
])
|
||||||
.yellow();
|
.yellow();
|
||||||
|
|
||||||
let haddr = format!("{:?}", joecalsend::LISTENING_SOCKET_ADDR);
|
let haddr = format!("{:?}", jocalsend::LISTENING_SOCKET_ADDR);
|
||||||
let http = "HTTP address";
|
let http = "HTTP address";
|
||||||
let http = Row::new(vec![
|
let http = Row::new(vec![
|
||||||
http.to_line().left_aligned(),
|
http.to_line().left_aligned(),
|
||||||
|
|
|
@ -11,9 +11,9 @@ use axum::{
|
||||||
use log::{debug, error, trace, warn};
|
use log::{debug, error, trace, warn};
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
|
|
||||||
use crate::{Config, JoecalService, RunningState, models::Device};
|
use crate::{Config, JocalService, RunningState, models::Device};
|
||||||
|
|
||||||
impl JoecalService {
|
impl JocalService {
|
||||||
pub async fn announce(&self, socket: Option<SocketAddr>) -> crate::error::Result<()> {
|
pub async fn announce(&self, socket: Option<SocketAddr>) -> crate::error::Result<()> {
|
||||||
trace!("announcing");
|
trace!("announcing");
|
||||||
announce_http(&self.device, socket, self.client.clone()).await?;
|
announce_http(&self.device, socket, self.client.clone()).await?;
|
||||||
|
@ -97,7 +97,7 @@ impl JoecalService {
|
||||||
|
|
||||||
/// Axum request handler for receiving other devices' registration requests.
|
/// Axum request handler for receiving other devices' registration requests.
|
||||||
pub async fn register_device(
|
pub async fn register_device(
|
||||||
State(service): State<JoecalService>,
|
State(service): State<JocalService>,
|
||||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||||
Json(device): Json<Device>,
|
Json(device): Json<Device>,
|
||||||
) -> Json<Device> {
|
) -> Json<Device> {
|
||||||
|
|
|
@ -9,12 +9,12 @@ use tokio::{net::TcpListener, sync::mpsc};
|
||||||
use tower_http::limit::RequestBodyLimitLayer;
|
use tower_http::limit::RequestBodyLimitLayer;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
JoecalService,
|
JocalService,
|
||||||
discovery::register_device,
|
discovery::register_device,
|
||||||
transfer::{prepare_upload, receive_upload},
|
transfer::{prepare_upload, receive_upload},
|
||||||
};
|
};
|
||||||
|
|
||||||
impl JoecalService {
|
impl JocalService {
|
||||||
pub async fn start_http_server(&self, stop_rx: mpsc::Receiver<()>) -> crate::error::Result<()> {
|
pub async fn start_http_server(&self, stop_rx: mpsc::Receiver<()>) -> crate::error::Result<()> {
|
||||||
let app = self.create_router();
|
let app = self.create_router();
|
||||||
// TODO: make addr config
|
// TODO: make addr config
|
||||||
|
|
|
@ -60,7 +60,7 @@ pub struct ReceiveRequest {
|
||||||
|
|
||||||
/// Contains the main network and backend state for an application session.
|
/// Contains the main network and backend state for an application session.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct JoecalService {
|
pub struct JocalService {
|
||||||
pub device: Device,
|
pub device: Device,
|
||||||
pub peers: Arc<Mutex<BTreeMap<String, (SocketAddr, Device)>>>,
|
pub peers: Arc<Mutex<BTreeMap<String, (SocketAddr, Device)>>>,
|
||||||
pub sessions: Arc<Mutex<BTreeMap<String, Session>>>, // Session ID to Session
|
pub sessions: Arc<Mutex<BTreeMap<String, Session>>>, // Session ID to Session
|
||||||
|
@ -74,7 +74,7 @@ pub struct JoecalService {
|
||||||
transfer_event_tx: UnboundedSender<TransferEvent>,
|
transfer_event_tx: UnboundedSender<TransferEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl JoecalService {
|
impl JocalService {
|
||||||
pub async fn new(
|
pub async fn new(
|
||||||
device: Device,
|
device: Device,
|
||||||
config: Config,
|
config: Config,
|
||||||
|
@ -190,7 +190,7 @@ pub struct Config {
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let home = std::env::home_dir().unwrap_or("/tmp".into());
|
let home = std::env::home_dir().unwrap_or("/tmp".into());
|
||||||
let dd = home.join("joecalsend-downloads");
|
let dd = home.join("jocalsend-downloads");
|
||||||
Self {
|
Self {
|
||||||
multicast_addr: SocketAddrV4::new(MULTICAST_IP, DEFAULT_PORT),
|
multicast_addr: SocketAddrV4::new(MULTICAST_IP, DEFAULT_PORT),
|
||||||
port: DEFAULT_PORT,
|
port: DEFAULT_PORT,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use joecalsend::{Config, JoecalService, Listeners, error, models::Device};
|
use jocalsend::{Config, JocalService, Listeners, error, models::Device};
|
||||||
use log::{error, info};
|
use log::{error, info};
|
||||||
use ratatui::DefaultTerminal;
|
use ratatui::DefaultTerminal;
|
||||||
use tokio::{sync::mpsc::unbounded_channel, task::JoinSet};
|
use tokio::{sync::mpsc::unbounded_channel, task::JoinSet};
|
||||||
|
@ -12,7 +12,7 @@ fn main() -> error::Result<()> {
|
||||||
|
|
||||||
if std::env::var("RUST_LOG").is_err() {
|
if std::env::var("RUST_LOG").is_err() {
|
||||||
unsafe {
|
unsafe {
|
||||||
std::env::set_var("RUST_LOG", "joecalsend");
|
std::env::set_var("RUST_LOG", "jocalsend");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
init_logger(LevelFilter::Info).map_err(|e| std::io::Error::other(format!("{e}")))?;
|
init_logger(LevelFilter::Info).map_err(|e| std::io::Error::other(format!("{e}")))?;
|
||||||
|
@ -35,9 +35,9 @@ async fn start_and_run(
|
||||||
) -> error::Result<()> {
|
) -> error::Result<()> {
|
||||||
let (event_tx, event_listener) = unbounded_channel();
|
let (event_tx, event_listener) = unbounded_channel();
|
||||||
|
|
||||||
let service = JoecalService::new(device, config.clone(), event_tx)
|
let service = JocalService::new(device, config.clone(), event_tx)
|
||||||
.await
|
.await
|
||||||
.expect("Could not create JoecalService");
|
.expect("Could not create JocalService");
|
||||||
|
|
||||||
let mut app = App::new(service, event_listener);
|
let mut app = App::new(service, event_listener);
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ pub enum Protocol {
|
||||||
impl Default for Device {
|
impl Default for Device {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
alias: "Joecalsend".to_string(),
|
alias: "Jocalsend".to_string(),
|
||||||
version: "2.1".to_string(),
|
version: "2.1".to_string(),
|
||||||
device_model: None,
|
device_model: None,
|
||||||
device_type: Some(DeviceType::Headless),
|
device_type: Some(DeviceType::Headless),
|
||||||
|
|
|
@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize};
|
||||||
use tokio::sync::mpsc::unbounded_channel;
|
use tokio::sync::mpsc::unbounded_channel;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
JoecalService, ReceiveDialog, ReceiveRequest, TransferEvent,
|
JocalService, ReceiveDialog, ReceiveRequest, TransferEvent,
|
||||||
error::{LocalSendError, Result},
|
error::{LocalSendError, Result},
|
||||||
models::{Device, FileMetadata},
|
models::{Device, FileMetadata},
|
||||||
};
|
};
|
||||||
|
@ -52,7 +52,7 @@ pub struct PrepareUploadRequest {
|
||||||
pub files: BTreeMap<String, FileMetadata>,
|
pub files: BTreeMap<String, FileMetadata>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl JoecalService {
|
impl JocalService {
|
||||||
pub async fn prepare_upload(
|
pub async fn prepare_upload(
|
||||||
&self,
|
&self,
|
||||||
peer: &str,
|
peer: &str,
|
||||||
|
@ -231,7 +231,7 @@ impl JoecalService {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn prepare_upload(
|
pub async fn prepare_upload(
|
||||||
State(service): State<JoecalService>,
|
State(service): State<JocalService>,
|
||||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||||
Json(req): Json<PrepareUploadRequest>,
|
Json(req): Json<PrepareUploadRequest>,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
|
@ -302,7 +302,7 @@ pub async fn prepare_upload(
|
||||||
|
|
||||||
pub async fn receive_upload(
|
pub async fn receive_upload(
|
||||||
Query(params): Query<UploadParams>,
|
Query(params): Query<UploadParams>,
|
||||||
State(service): State<JoecalService>,
|
State(service): State<JocalService>,
|
||||||
body: Bytes,
|
body: Bytes,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
// Extract query parameters
|
// Extract query parameters
|
||||||
|
@ -379,7 +379,7 @@ pub struct UploadParams {
|
||||||
|
|
||||||
pub async fn register_cancel(
|
pub async fn register_cancel(
|
||||||
Query(params): Query<CancelParams>,
|
Query(params): Query<CancelParams>,
|
||||||
State(service): State<JoecalService>,
|
State(service): State<JocalService>,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
let mut sessions_lock = service.sessions.lock().await;
|
let mut sessions_lock = service.sessions.lock().await;
|
||||||
let session = match sessions_lock.get_mut(¶ms.session_id) {
|
let session = match sessions_lock.get_mut(¶ms.session_id) {
|
||||||
|
|
Loading…
Reference in a new issue