From 4f3912a02082aa213ff57fe9a7fbe536b61d83b2 Mon Sep 17 00:00:00 2001 From: ntr Date: Fri, 12 Jul 2019 22:27:21 +1000 Subject: [PATCH] nginx changes and invader init --- WORKLOG.md | 3 + client/src/components/anims/idle.jsx | 1 + client/src/components/construct.jsx | 2 +- .../sites-available/mnml.gg.DEV.nginx.conf | 15 +- server/src/img.rs | 102 ++++++++++++ server/src/main.rs | 146 +++++++++--------- 6 files changed, 190 insertions(+), 79 deletions(-) diff --git a/WORKLOG.md b/WORKLOG.md index 7137aefe..ea2872e5 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -55,6 +55,9 @@ do not allow vbox actions for finished instances *SERVER* * push events +* test rust-ws w/ hyper upgrade +* tx middleware + ## SOON diff --git a/client/src/components/anims/idle.jsx b/client/src/components/anims/idle.jsx index 0972b4ac..2b7c2986 100644 --- a/client/src/components/anims/idle.jsx +++ b/client/src/components/anims/idle.jsx @@ -1,6 +1,7 @@ const anime = require('animejs').default; function idle(id) { + return false; const duration = anime.random(2000, 18000); const target = document.getElementById(id); return anime({ diff --git a/client/src/components/construct.jsx b/client/src/components/construct.jsx index 9c669810..d7ef126d 100644 --- a/client/src/components/construct.jsx +++ b/client/src/components/construct.jsx @@ -31,7 +31,7 @@ class ConstructAvatar extends Component {
); } diff --git a/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf b/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf index a9ab42eb..19fe416b 100644 --- a/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf +++ b/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf @@ -1,9 +1,14 @@ -error_log /var/log/nginx/mnml.nginx.log debug; +error_log /var/log/mnml/nginx.log debug; -upstream mnml { +upstream mnml_http { server 127.0.0.1:40000; } +upstream mnml_ws { + server 127.0.0.1:40055; +} + + map $http_upgrade $connection_upgrade { default upgrade; '' close; @@ -14,7 +19,7 @@ server { location / { root /var/lib/mnml/public/dist; index index.html; - try_files $uri $uri/ =404; + try_files $uri $uri/ index.html; } location /imgs/ { @@ -23,7 +28,7 @@ server { } location /api/ws { - proxy_pass http://mnml; + proxy_pass http://mnml_ws; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; @@ -31,7 +36,7 @@ server { } location /api/ { - proxy_pass http://mnml; + proxy_pass http://mnml_http; proxy_read_timeout 600s; } } diff --git a/server/src/img.rs b/server/src/img.rs index 557560ba..1d383704 100644 --- a/server/src/img.rs +++ b/server/src/img.rs @@ -1,6 +1,8 @@ use uuid::Uuid; use rand::prelude::*; use std::fs::copy; +use std::fs::File; +use std::io::prelude::*; use failure::Error; use failure::err_msg; @@ -22,3 +24,103 @@ pub fn img_molecular_write(id: Uuid) -> Result { return Err(err_msg("too many missing molecules. wrong directory?")) } + + + +fn invader_img_write(id: Uuid) -> Result { + let mut rng = thread_rng(); + let mut svg = Vec::new(); + + write!(&mut svg, "")?; + for i in 0..50 { + let x = (i % 5) * 50; + let y = (i / 5) * 50; + + let colour = match rng.gen_bool(0.5) { + true => "whitesmoke", + false => "none", + }; + write!(&mut svg, "", colour, x, y)?; + write!(&mut svg, "", colour, 450 - x, y)?; + } + + write!(&mut svg, "")?; + + // println!("{:?}", String::from_utf8(svg.clone())?); + + let dest = format!("/var/lib/mnml/public/imgs/{}.svg", id); + println!("molecule dest={:?}", dest); + + let mut file = File::create(dest)?; + file.write_all(&svg)?; + + Ok(id) +} + + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn invader_img_test() { + invader_img_write(Uuid::new_v4()).unwrap(); + } +} + + + +// function createColor() { +// //saturation is the whole color spectrum +// var h = Math.floor(rand() * 360); +// //saturation goes from 40 to 100, it avoids greyish colors +// var s = ((rand() * 60) + 40) + '%'; +// //lightness can be anything from 0 to 100, but probabilities are a bell curve around 50% +// var l = ((rand()+rand()+rand()+rand()) * 25) + '%'; + +// var color = 'hsl(' + h + ',' + s + ',' + l + ')'; +// return color; +// } + +// function createImageData(size) { +// var width = size; // Only support square icons for now +// var height = size; + +// var dataWidth = Math.ceil(width / 2); +// var mirrorWidth = width - dataWidth; + +// var data = []; +// for(var y = 0; y < height; y++) { +// var row = []; +// for(var x = 0; x < dataWidth; x++) { +// // this makes foreground and background color to have a 43% (1/2.3) probability +// // spot color has 13% chance +// row[x] = Math.floor(rand()*2.3); +// } +// var r = row.slice(0, mirrorWidth); +// r.reverse(); +// row = row.concat(r); + +// for(var i = 0; i < row.length; i++) { +// data.push(row[i]); +// } +// } + +// return data; +// } + +// function buildOpts(opts) { +// var newOpts = {}; + +// newOpts.seed = opts.seed || Math.floor((Math.random()*Math.pow(10,16))).toString(16); + +// seedrand(newOpts.seed); + +// newOpts.size = opts.size || 8; +// newOpts.scale = opts.scale || 4; +// newOpts.color = opts.color || createColor(); +// newOpts.bgcolor = opts.bgcolor || createColor(); +// newOpts.spotcolor = opts.spotcolor || createColor(); + +// return newOpts; +// } \ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index 47d2f8d1..ffa14730 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -27,86 +27,86 @@ extern crate cookie; extern crate tungstenite; extern crate crossbeam_channel; -mod account; -mod construct; -mod effect; -mod game; -mod instance; -mod item; +// mod account; +// mod construct; +// mod effect; +// mod game; +// mod instance; +// mod item; mod img; -mod mob; -mod mtx; -mod names; -mod net; -mod payments; -mod pg; -mod player; -mod pubsub; -mod rpc; -mod skill; -mod spec; -mod util; -mod vbox; -mod warden; -mod ws; +// mod mob; +// mod mtx; +// mod names; +// mod net; +// mod payments; +// mod pg; +// mod player; +// mod pubsub; +// mod rpc; +// mod skill; +// mod spec; +// mod util; +// mod vbox; +// mod warden; +// mod ws; -use std::thread::{sleep, spawn}; -use std::time::{Duration}; -use dotenv::dotenv; +// use std::thread::{sleep, spawn}; +// use std::time::{Duration}; +// use dotenv::dotenv; -use pubsub::pg_listen; -use warden::warden; +// use pubsub::pg_listen; +// use warden::warden; -fn setup_logger() -> Result<(), fern::InitError> { - fern::Dispatch::new() - .format(|out, message, record| { - out.finish(format_args!( - "{}[{}][{}] {}", - chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"), - record.target(), - record.level(), - message - )) - }) - .level_for("postgres", log::LevelFilter::Info) - .level_for("iron", log::LevelFilter::Info) - .level(log::LevelFilter::Info) - .chain(std::io::stdout()) - .chain(fern::log_file("/var/log/mnml/mnml.log")?) - .apply()?; - Ok(()) -} +// fn setup_logger() -> Result<(), fern::InitError> { +// fern::Dispatch::new() +// .format(|out, message, record| { +// out.finish(format_args!( +// "{}[{}][{}] {}", +// chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"), +// record.target(), +// record.level(), +// message +// )) +// }) +// .level_for("postgres", log::LevelFilter::Info) +// .level_for("iron", log::LevelFilter::Info) +// .level(log::LevelFilter::Info) +// .chain(std::io::stdout()) +// .chain(fern::log_file("/var/log/mnml/mnml.log")?) +// .apply()?; +// Ok(()) +// } -fn main() { - dotenv().ok(); - setup_logger().unwrap(); +// fn main() { +// dotenv().ok(); +// setup_logger().unwrap(); - let pool = pg::create_pool(); +// let pool = pg::create_pool(); - let ws_pool = pool.clone(); - let http_pool = pool.clone(); - let warden_pool = pool.clone(); - let pubsub_pool = pool.clone(); +// let ws_pool = pool.clone(); +// let http_pool = pool.clone(); +// let warden_pool = pool.clone(); +// let pubsub_pool = pool.clone(); - spawn(move || { - loop { - let db_connection = warden_pool.get().expect("unable to get db connection"); - if let Err(e) = warden(db_connection) { - info!("{:?}", e); - } - sleep(Duration::new(1, 0)); - } - }); +// spawn(move || { +// loop { +// let db_connection = warden_pool.get().expect("unable to get db connection"); +// if let Err(e) = warden(db_connection) { +// info!("{:?}", e); +// } +// sleep(Duration::new(1, 0)); +// } +// }); - spawn(move || loop { - let pubsub_conn = pubsub_pool.get().expect("could not get pubsub pg connection"); - match pg_listen(pubsub_conn) { - Ok(_) => warn!("pg listen closed"), - Err(e) => warn!("pg_listen error {:?}", e), - } - }); +// spawn(move || loop { +// let pubsub_conn = pubsub_pool.get().expect("could not get pubsub pg connection"); +// match pg_listen(pubsub_conn) { +// Ok(_) => warn!("pg listen closed"), +// Err(e) => warn!("pg_listen error {:?}", e), +// } +// }); - spawn(move || net::start(http_pool)); - ws::start(ws_pool); - info!("server started"); -} +// spawn(move || net::start(http_pool)); +// ws::start(ws_pool); +// info!("server started"); +// }