send gotted messags from freenet to frontend
This commit is contained in:
parent
09f26108c8
commit
7c28f99546
43
Cargo.lock
generated
43
Cargo.lock
generated
|
@ -639,6 +639,7 @@ dependencies = [
|
|||
"futures-util",
|
||||
"log",
|
||||
"ntru",
|
||||
"r2d2_sqlite",
|
||||
"regex",
|
||||
"rusqlite",
|
||||
"serde",
|
||||
|
@ -744,9 +745,9 @@ checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235"
|
|||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.20.1"
|
||||
version = "0.22.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64d31059f22935e6c31830db5249ba2b7ecd54fd73a9909286f0a67aa55c2fbd"
|
||||
checksum = "19cb1effde5f834799ac5e5ef0e40d45027cd74f271b1de786ba8abb30e2164d"
|
||||
dependencies = [
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
|
@ -1077,6 +1078,27 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "r2d2"
|
||||
version = "0.8.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "545c5bc2b880973c9c10e4067418407a0ccaa3091781d1671d46eb35107cb26f"
|
||||
dependencies = [
|
||||
"log",
|
||||
"parking_lot",
|
||||
"scheduled-thread-pool",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "r2d2_sqlite"
|
||||
version = "0.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d24607049214c5e42d3df53ac1d8a23c34cc6a5eefe3122acb2c72174719959"
|
||||
dependencies = [
|
||||
"r2d2",
|
||||
"rusqlite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.7.3"
|
||||
|
@ -1207,9 +1229,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rusqlite"
|
||||
version = "0.24.2"
|
||||
version = "0.25.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d5f38ee71cbab2c827ec0ac24e76f82eca723cee92c509a65f67dee393c25112"
|
||||
checksum = "fbc783b7ddae608338003bac1fa00b6786a75a9675fbd8e87243ecfdea3f6ed2"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"chrono",
|
||||
|
@ -1263,6 +1285,15 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scheduled-thread-pool"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc6f74fd1204073fa02d5d5d68bec8021be4c38690b61264b2fdb48083d0e7d7"
|
||||
dependencies = [
|
||||
"parking_lot",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
|
@ -1377,9 +1408,9 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
|||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.4.2"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252"
|
||||
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
|
|
|
@ -8,7 +8,7 @@ edition = "2018"
|
|||
|
||||
[dependencies]
|
||||
ntru = "0.5.6"
|
||||
rusqlite = {version = "0.24.2", features = ["chrono"]}
|
||||
rusqlite = {version = "0.25.1", features = ["chrono"]}
|
||||
toml = "0.5.8"
|
||||
tungstenite = "0.12.0"
|
||||
tokio = { version = "0.3.3", features = ["full"] }
|
||||
|
@ -25,6 +25,7 @@ simple_logger = "1.11.0"
|
|||
chrono = {version = "0.4.19", features = ["serde"]}
|
||||
uuid = {version = "0.8.2", features = ["serde" , "v4"]}
|
||||
regex = "1.4.5"
|
||||
r2d2_sqlite = "0.18.0"
|
||||
|
||||
[dependencies.fcpv2]
|
||||
path = "../FCPv2"
|
||||
|
|
|
@ -98,7 +98,6 @@ pub fn send_message(
|
|||
let identifier = &user_data.id.0.to_string()[..];
|
||||
let message_id: u32 = user_data.my_messages_count;
|
||||
let id = Id(uuid::Uuid::parse_str(identifier).expect("failed to parse user ID"));
|
||||
let _ = db::users::increase_my_messages_count(id.clone(), conn);
|
||||
let db_message = db::types::Message {
|
||||
id: message_id,
|
||||
date: chrono::offset::Local::now(),
|
||||
|
@ -113,8 +112,7 @@ pub fn send_message(
|
|||
server_sender
|
||||
.send(PackedMessage::ToFreenet(fcp_req))
|
||||
.unwrap();
|
||||
log::debug!("Increasing messages count");
|
||||
let _ = db::users::increase_my_messages_count(id.clone(), &conn);
|
||||
let _ = db::users::increase_my_messages_count(id.clone(), conn);
|
||||
Ok(())
|
||||
} else {
|
||||
// create error types
|
||||
|
|
17
src/api/identifier.rs
Normal file
17
src/api/identifier.rs
Normal file
|
@ -0,0 +1,17 @@
|
|||
use crate::db::types::Id;
|
||||
use regex::Regex;
|
||||
use uuid::{self, Uuid};
|
||||
|
||||
|
||||
|
||||
pub fn parse_message_identifier(identifier: &str) -> (Id, u32) {
|
||||
let reg = Regex::new(
|
||||
r"new-message-(.*)/(.*)",
|
||||
)
|
||||
.unwrap();
|
||||
let res = reg.captures(identifier).unwrap();
|
||||
let uuid = Id(Uuid::parse_str(&res[1]).unwrap());
|
||||
let id = u32::from_str_radix(&res[2], 10).unwrap();
|
||||
return (uuid, id)
|
||||
|
||||
}
|
|
@ -2,3 +2,4 @@ pub mod request;
|
|||
pub mod response;
|
||||
pub mod handlers;
|
||||
pub mod selector;
|
||||
pub mod identifier;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use crate::chat::types::PackedMessage;
|
||||
use fcpv2::{types::traits::FcpParser, node::fcp_response::AllData};
|
||||
use crate::db;
|
||||
use async_std::{
|
||||
io,
|
||||
|
@ -101,14 +102,27 @@ async fn connection_for_receiving(
|
|||
}
|
||||
PackedMessage::FromFreenet(response) => {
|
||||
let r = response.clone();
|
||||
let res_type = r.lines().next();
|
||||
log::debug!("Got:\n {}", &response);
|
||||
async_std::task::block_on(
|
||||
sender
|
||||
// TODO freenet_response_handler
|
||||
.send(Message::Text(r.to_string())),
|
||||
)
|
||||
.expect("Couldn't send messge");
|
||||
// .await
|
||||
match res_type {
|
||||
Some("AllData") => {
|
||||
let data = AllData::parse(&r).unwrap();
|
||||
log::debug!("GOT mESSAGE {}\n FROM FREENET: {}",data.identifier, data.data );
|
||||
server_sender.send(PackedMessage::ToClient(data.data));
|
||||
//TOOD parse identifier
|
||||
let (uuid, id) = crate::api::identifier::parse_message_identifier(&data.identifier);
|
||||
log::debug!("parsed identifier: {:?} {:?}", uuid, id);
|
||||
/*async_std::task::block_on(
|
||||
sender
|
||||
// TODO freenet_response_handler
|
||||
.send(Message::Text(r.to_string())),
|
||||
)
|
||||
.expect("Couldn't send messge");
|
||||
*/
|
||||
}
|
||||
None => {}
|
||||
_ => {}
|
||||
}
|
||||
// .expect("Couldn't send messge");
|
||||
}
|
||||
_ => {}
|
||||
|
@ -117,7 +131,7 @@ async fn connection_for_receiving(
|
|||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// sending ToClient messages to frontend
|
||||
async fn connection_for_sending(
|
||||
mut receiver: SplitStream<WebSocketStream<TcpStream>>,
|
||||
server_sender: SP,
|
||||
|
|
|
@ -25,6 +25,7 @@ pub async fn to_server_sender(
|
|||
log::info!("Message sended to client thread");
|
||||
}
|
||||
PackedMessage::ToFreenet(req) => {
|
||||
let res_type = req.lines().next().unwrap();
|
||||
log::debug!("SENDED {}", req);
|
||||
sender.write(req.as_bytes()).await?;
|
||||
log::info!("Message sended to freenet");
|
||||
|
|
|
@ -28,15 +28,17 @@ pub async fn request_repeater(ss: SP) -> io::Result<()> {
|
|||
let id = user.id.0.to_string();
|
||||
let index = user.messages_count + 1;
|
||||
|
||||
let key = USK {
|
||||
ssk: parsed.private_key.clone(),
|
||||
path: format!("{}/{}", &id, &index),
|
||||
};
|
||||
log::debug!("sending {:?}", &key.convert());
|
||||
match ss.send(PackedMessage::ToFreenet(
|
||||
ClientGet::new_default(
|
||||
KEY::USK(
|
||||
USK {
|
||||
ssk: parsed.private_key.clone(),
|
||||
path: format!("{}/{}", &id, &index),
|
||||
}
|
||||
key
|
||||
),
|
||||
&format!("rec;{};{}", &id, &index)[..], // TODO create Identifier type
|
||||
&format!("new-message-{}/{}", &id, &index)[..], // TODO create Identifier type
|
||||
ReturnType::Direct,
|
||||
)
|
||||
.convert(),
|
||||
|
|
|
@ -41,7 +41,7 @@ pub fn select_n_last_messages(
|
|||
conn: &Connection,
|
||||
) -> Result<Vec<Message>> {
|
||||
let mut selected = conn.prepare(
|
||||
"SELECT * FROM messages CROSS JOIN my_messages WHERE messages.user_id = ?1 or my_messages.user_id = ?1 ORDER BY date DESC LIMIT ?2",
|
||||
"SELECT * FROM messages WHERE user_id = ?1 ORDER BY date DESC LIMIT ?2",
|
||||
)?;
|
||||
let message_iter = selected.query_map(params![user_id, count], |row| ret_mes(row))?;
|
||||
let mut messages: Vec<Message> = Vec::new();
|
||||
|
@ -62,8 +62,8 @@ pub fn add_message(message: Message, conn: &Connection) -> Result<()> {
|
|||
date,
|
||||
message,
|
||||
from_me
|
||||
) VALUES (?1, ?2, ?3, ?4)",
|
||||
params![message.id, message.user_id, message.date, message.message],
|
||||
) VALUES (?1, ?2, ?3, ?4, ?5)",
|
||||
params![message.id, message.user_id, message.date, message.message, false],
|
||||
) {
|
||||
Ok(_) => log::info!("message {:} added succsessfully!", message.id),
|
||||
Err(e) => {
|
||||
|
@ -76,7 +76,7 @@ pub fn add_message(message: Message, conn: &Connection) -> Result<()> {
|
|||
|
||||
pub fn add_my_message(message: Message, conn: &Connection) -> Result<()> {
|
||||
match conn.execute(
|
||||
"INSERT INTO my_messages (
|
||||
"INSERT INTO messages (
|
||||
id,
|
||||
user_id,
|
||||
date,
|
||||
|
|
|
@ -49,6 +49,7 @@ fn main() -> io::Result<()> {
|
|||
SimpleLogger::new().init().unwrap();
|
||||
|
||||
let db = db::start_db().unwrap();
|
||||
//let manager = r2d2_foodb::FooConnectionManager::new("localhost:1234");
|
||||
|
||||
let (to_server_sender, server_receiver): (Sender<PackedMessage>, Receiver<PackedMessage>) =
|
||||
mpsc::channel();
|
||||
|
|
Loading…
Reference in a new issue