mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 21:39:21 +00:00
Start to update main function
This commit is contained in:
parent
d07100a2c4
commit
37a7efb5b3
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -815,6 +815,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sha1",
|
"sha1",
|
||||||
|
"tokio 0.2.25",
|
||||||
"webpage",
|
"webpage",
|
||||||
"webrtc-sdp",
|
"webrtc-sdp",
|
||||||
"yaml-rust",
|
"yaml-rust",
|
||||||
|
@ -40,3 +40,4 @@ mp4 = "0.8.1"
|
|||||||
zip = "0.5.10"
|
zip = "0.5.10"
|
||||||
webpage = "1.2.0"
|
webpage = "1.2.0"
|
||||||
gouth = "0.2.0"
|
gouth = "0.2.0"
|
||||||
|
tokio = { version = "0.2" }
|
@ -29,6 +29,9 @@ privacy-policy-url: http://devweb.local/comunic/current/about.php?cgu&privacy
|
|||||||
# Email where the Comunic staff can be contacted
|
# Email where the Comunic staff can be contacted
|
||||||
contact-email: contact@communiquons.org
|
contact-email: contact@communiquons.org
|
||||||
|
|
||||||
|
# Password reset URL pattern
|
||||||
|
password-reset-url: https://devweb.local/comunic/v2/reset_password?token=#{TOKEN}
|
||||||
|
|
||||||
# Android application download URL
|
# Android application download URL
|
||||||
play-store-url: https://play.google.com/store/apps/details?id=org.communiquons.comunic
|
play-store-url: https://play.google.com/store/apps/details?id=org.communiquons.comunic
|
||||||
android-direct-download-url: https://files.communiquons.org/comunic/mobile/latest-android.php
|
android-direct-download-url: https://files.communiquons.org/comunic/mobile/latest-android.php
|
||||||
|
@ -43,6 +43,7 @@ pub struct Config {
|
|||||||
pub terms_url: String,
|
pub terms_url: String,
|
||||||
pub privacy_policy_url: String,
|
pub privacy_policy_url: String,
|
||||||
pub contact_email: String,
|
pub contact_email: String,
|
||||||
|
pub password_reset_url: String,
|
||||||
pub play_store_url: String,
|
pub play_store_url: String,
|
||||||
pub android_direct_download_url: String,
|
pub android_direct_download_url: String,
|
||||||
pub proxy: Option<String>,
|
pub proxy: Option<String>,
|
||||||
@ -133,6 +134,7 @@ impl Config {
|
|||||||
privacy_policy_url: Config::yaml_str(parsed, "privacy-policy-url"),
|
privacy_policy_url: Config::yaml_str(parsed, "privacy-policy-url"),
|
||||||
|
|
||||||
contact_email: Config::yaml_str(parsed, "contact-email"),
|
contact_email: Config::yaml_str(parsed, "contact-email"),
|
||||||
|
password_reset_url: Config::yaml_str(parsed, "password-reset-url"),
|
||||||
|
|
||||||
play_store_url: Config::yaml_str(parsed, "play-store-url"),
|
play_store_url: Config::yaml_str(parsed, "play-store-url"),
|
||||||
android_direct_download_url: Config::yaml_str(parsed, "android-direct-download-url"),
|
android_direct_download_url: Config::yaml_str(parsed, "android-direct-download-url"),
|
||||||
|
71
src/main.rs
71
src/main.rs
@ -1,11 +1,23 @@
|
|||||||
|
use std::future::Future;
|
||||||
|
|
||||||
use comunic_server::{cleanup_thread, server};
|
use comunic_server::{cleanup_thread, server};
|
||||||
use comunic_server::data::config::{conf, Config};
|
use comunic_server::data::config::{conf, Config};
|
||||||
use comunic_server::helpers::database;
|
use comunic_server::helpers::database;
|
||||||
|
|
||||||
|
type MainActionFunction = Box<dyn Future<Output=std::io::Result<()>>>;
|
||||||
|
|
||||||
|
struct Action {
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
arguments: Vec<String>,
|
||||||
|
function: Box<dyn FnOnce() -> MainActionFunction>,
|
||||||
|
}
|
||||||
|
|
||||||
#[actix_rt::main]
|
#[actix_rt::main]
|
||||||
async fn main() -> std::io::Result<()> {
|
async fn main() -> std::io::Result<()> {
|
||||||
let conf_file = match std::env::args().skip(1).next() {
|
let args: Vec<String> = std::env::args().collect();
|
||||||
Some(el) => el,
|
let conf_file = match args.get(1) {
|
||||||
|
Some(el) => el.to_string(),
|
||||||
None => "config.yaml".to_string(),
|
None => "config.yaml".to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -15,9 +27,64 @@ async fn main() -> std::io::Result<()> {
|
|||||||
// Connect to the database
|
// Connect to the database
|
||||||
database::connect(&conf().database).expect("Could not connect to database!");
|
database::connect(&conf().database).expect("Could not connect to database!");
|
||||||
|
|
||||||
|
// Get selected action
|
||||||
|
let action = args
|
||||||
|
.get(2)
|
||||||
|
.map(|a| a.as_str())
|
||||||
|
.unwrap_or("serve")
|
||||||
|
.to_string();
|
||||||
|
|
||||||
|
/* let actions = vec![
|
||||||
|
Action {
|
||||||
|
name: "serve".to_string(),
|
||||||
|
description: "Start the Comunic Server (default action)".to_string(),
|
||||||
|
arguments: vec![],
|
||||||
|
function: Box::new(serve),
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
let selected_action = actions
|
||||||
|
.iter()
|
||||||
|
.filter(|p|p.name.eq(&action))
|
||||||
|
.next();
|
||||||
|
|
||||||
|
let selected_action = match selected_action {
|
||||||
|
None => {
|
||||||
|
eprintln!("Action {} invalid! For more information try 'help'!", action);
|
||||||
|
std::process::exit(-1);
|
||||||
|
}
|
||||||
|
Some(a) => a
|
||||||
|
};
|
||||||
|
|
||||||
|
if selected_action.arguments.len() != args.len() - 2 {
|
||||||
|
eprintln!("Invalid number of arguments!");
|
||||||
|
std::process::exit(-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
let func = (selected_action.function)();
|
||||||
|
func.await*/
|
||||||
|
serve()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Start Comunic Server (main action)
|
||||||
|
fn serve() -> std::io::Result<()> {
|
||||||
|
let t = std::thread::spawn(|| {
|
||||||
|
let sys = actix::System::new("sys");
|
||||||
|
|
||||||
|
let promise = async {
|
||||||
// Start cleanup thread
|
// Start cleanup thread
|
||||||
cleanup_thread::start().expect("Failed to start cleanup thread!");
|
cleanup_thread::start().expect("Failed to start cleanup thread!");
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
server::start_server(conf()).await
|
server::start_server(conf()).await
|
||||||
|
};
|
||||||
|
|
||||||
|
tokio::runtime::Runtime::new().unwrap().block_on(promise)
|
||||||
|
.expect("Failed to start server!");
|
||||||
|
|
||||||
|
let _ = sys.run();
|
||||||
|
});
|
||||||
|
|
||||||
|
t.join().unwrap();
|
||||||
|
Ok(())
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user