nginx acp stuff
This commit is contained in:
parent
6fe9b52d00
commit
8684f32db2
@ -3,6 +3,7 @@ require('./../client/assets/styles/skeleton.css');
|
||||
|
||||
require('./../client/assets/styles/styles.less');
|
||||
require('./../client/assets/styles/menu.less');
|
||||
require('./../client/assets/styles/acp.less');
|
||||
require('./../client/assets/styles/nav.less');
|
||||
require('./../client/assets/styles/footer.less');
|
||||
require('./../client/assets/styles/account.less');
|
||||
|
||||
@ -14,10 +14,13 @@ const addState = connect(
|
||||
const {
|
||||
account,
|
||||
user,
|
||||
msg,
|
||||
} = state;
|
||||
|
||||
return {
|
||||
account, user,
|
||||
account,
|
||||
user,
|
||||
msg,
|
||||
};
|
||||
},
|
||||
|
||||
@ -30,8 +33,13 @@ const addState = connect(
|
||||
dispatch(actions.setGames(list));
|
||||
}
|
||||
|
||||
function setMsg(msg) {
|
||||
dispatch(actions.setMsg(msg));
|
||||
}
|
||||
|
||||
return {
|
||||
setUser,
|
||||
setMsg,
|
||||
setGames,
|
||||
};
|
||||
}
|
||||
@ -43,12 +51,8 @@ class AcpMain extends Component {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
account: {},
|
||||
name: null,
|
||||
id: null,
|
||||
msg: '',
|
||||
user: null,
|
||||
games: [],
|
||||
name: null,
|
||||
};
|
||||
}
|
||||
|
||||
@ -56,31 +60,38 @@ class AcpMain extends Component {
|
||||
const {
|
||||
setGames,
|
||||
setUser,
|
||||
setMsg,
|
||||
|
||||
msg,
|
||||
} = args;
|
||||
|
||||
const {
|
||||
msg,
|
||||
name,
|
||||
id,
|
||||
} = state;
|
||||
|
||||
const reset = () => {
|
||||
setMsg(null);
|
||||
this.setState({ id: null, name: null });
|
||||
};
|
||||
|
||||
const getUser = () => {
|
||||
this.setState({ msg: null });
|
||||
reset();
|
||||
postData('/acp/user', { id, name })
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.error) return this.setState({ msg: data.error });
|
||||
if (data.error) return setMsg(data.error);
|
||||
setUser(data);
|
||||
})
|
||||
.catch(error => errorToast(error));
|
||||
};
|
||||
|
||||
const gameList = () => {
|
||||
this.setState({ msg: null });
|
||||
reset();
|
||||
postData('/acp/game/list', { number: 20 })
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.error) return this.setState({ msg: data.error });
|
||||
if (data.error) return setMsg(data.error);
|
||||
console.log(data);
|
||||
setGames(data.data);
|
||||
})
|
||||
@ -88,11 +99,11 @@ class AcpMain extends Component {
|
||||
};
|
||||
|
||||
const gameOpen = () => {
|
||||
this.setState({ msg: null });
|
||||
reset();
|
||||
postData('/acp/game/open')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.error) return this.setState({ msg: data.error });
|
||||
if (data.error) return setMsg(data.error);
|
||||
console.log(data);
|
||||
setGames(data);
|
||||
})
|
||||
@ -102,7 +113,7 @@ class AcpMain extends Component {
|
||||
return (
|
||||
<main class='menu'>
|
||||
<div class="top">
|
||||
<div>{msg}</div>
|
||||
<div class="msg">{msg}</div>
|
||||
<AcpUser />
|
||||
<AcpGameList />
|
||||
</div>
|
||||
|
||||
@ -3,8 +3,7 @@ const { Component } = require('preact');
|
||||
const { connect } = require('preact-redux');
|
||||
const linkState = require('linkstate').default;
|
||||
|
||||
const axios = require('axios');
|
||||
|
||||
const { postData, errorToast } = require('./../../client/src/utils');
|
||||
const actions = require('./actions');
|
||||
|
||||
const addState = connect(
|
||||
@ -14,22 +13,58 @@ const addState = connect(
|
||||
} = state;
|
||||
|
||||
return {
|
||||
user
|
||||
user,
|
||||
};
|
||||
},
|
||||
function receiveDispatch(dispatch) {
|
||||
function setUser(user) {
|
||||
dispatch(actions.setUser(user));
|
||||
}
|
||||
|
||||
function setMsg(msg) {
|
||||
dispatch(actions.setMsg(msg));
|
||||
}
|
||||
|
||||
return {
|
||||
setUser,
|
||||
setMsg,
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
function AcpGameList(args) {
|
||||
function AcpUser(args) {
|
||||
const {
|
||||
user,
|
||||
setUser,
|
||||
setMsg,
|
||||
} = args;
|
||||
|
||||
const {
|
||||
credits,
|
||||
} = this.state;
|
||||
|
||||
if (!user) return false;
|
||||
|
||||
const reset = () => {
|
||||
setMsg(null);
|
||||
this.setState({ credits: null });
|
||||
};
|
||||
|
||||
const addCredits = () => {
|
||||
reset();
|
||||
postData('/acp/user/credits', { id: user.id, credits })
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
if (data.error) return setMsg(data.error);
|
||||
return setUser(data);
|
||||
})
|
||||
.catch(error => setMsg(error));
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>{user.name}</h1>
|
||||
<div class="user">
|
||||
<dl>
|
||||
<h1>{user.name}</h1>
|
||||
<dt>Id</dt>
|
||||
<dd>{user.id}</dd>
|
||||
<dt>Credits</dt>
|
||||
@ -37,8 +72,26 @@ function AcpGameList(args) {
|
||||
<dt>Subscribed</dt>
|
||||
<dd>{user.subscribed.toString()}</dd>
|
||||
</dl>
|
||||
<div>
|
||||
<label for="current">Add Credits:</label>
|
||||
<input
|
||||
class="login-input"
|
||||
type="number"
|
||||
name="credits"
|
||||
value={credits}
|
||||
onInput={linkState(this, 'credits')}
|
||||
placeholder="credits"
|
||||
/>
|
||||
<button
|
||||
onClick={addCredits}>
|
||||
Add Credits
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<h2>Constructs</h2>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = addState(AcpGameList);
|
||||
module.exports = addState(AcpUser);
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
export const setAccount = value => ({ type: 'SET_ACCOUNT', value });
|
||||
export const setUser = value => ({ type: 'SET_USER', value });
|
||||
export const setMsg = value => ({ type: 'SET_MSG', value });
|
||||
export const setGames = value => ({ type: 'SET_GAMES', value });
|
||||
|
||||
@ -13,5 +13,6 @@ function createReducer(defaultState, actionType) {
|
||||
module.exports = {
|
||||
account: createReducer(null, 'SET_ACCOUNT'),
|
||||
user: createReducer(null, 'SET_USER'),
|
||||
msg: createReducer(null, 'SET_MSG'),
|
||||
games: createReducer([], 'SET_GAMES'),
|
||||
};
|
||||
|
||||
@ -12,3 +12,9 @@ cd $MNML_PATH/client
|
||||
rm -rf dist
|
||||
npm i
|
||||
npm run build
|
||||
|
||||
echo "Building acp version $VERSION"
|
||||
cd $MNML_PATH/acp
|
||||
rm -rf dist
|
||||
npm i
|
||||
npm run build
|
||||
|
||||
@ -6,8 +6,12 @@ MNML_PATH=$(realpath "$DIR/../")
|
||||
VERSION=$(<"$MNML_PATH/VERSION")
|
||||
|
||||
SERVER_BIN_DIR="/usr/local/mnml/bin"
|
||||
|
||||
CLIENT_DIST_DIR="/var/lib/mnml/client"
|
||||
CLIENT_PUBLIC_DIR="/var/lib/mnml/public/current"
|
||||
CLIENT_PUBLIC_DIR="/var/lib/mnml/public/client"
|
||||
|
||||
ACP_DIST_DIR="/var/lib/mnml/acp"
|
||||
ACP_PUBLIC_DIR="/var/lib/mnml/public/acp"
|
||||
|
||||
# server updates
|
||||
echo "syncing server $VERSION "
|
||||
@ -19,6 +23,11 @@ ssh -q mnml ls -lah "$SERVER_BIN_DIR"
|
||||
echo "syncing client $VERSION"
|
||||
rsync -a --delete --delete-excluded "$MNML_PATH/client/dist/" mnml:"$CLIENT_DIST_DIR/$VERSION/"
|
||||
ssh -q mnml ln -nfs "$CLIENT_DIST_DIR/$VERSION" "$CLIENT_PUBLIC_DIR"
|
||||
|
||||
# acp updates
|
||||
echo "syncing acp $VERSION"
|
||||
rsync -a --delete --delete-excluded "$MNML_PATH/acp/dist/" mnml:"$ACP_DIST_DIR/$VERSION/"
|
||||
ssh -q mnml ln -nfs "$ACP_DIST_DIR/$VERSION" "$ACP_PUBLIC_DIR"
|
||||
ssh -q mnml ls -lah "/var/lib/mnml/public"
|
||||
|
||||
echo "restarting mnml service"
|
||||
|
||||
24
client/assets/styles/acp.less
Normal file
24
client/assets/styles/acp.less
Normal file
@ -0,0 +1,24 @@
|
||||
#mnml.acp {
|
||||
user-select: text;
|
||||
-moz-user-select: text;
|
||||
-webkit-user-select: text;
|
||||
-ms-user-select: text;
|
||||
|
||||
.bottom {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
|
||||
.top {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.user {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
}
|
||||
@ -88,19 +88,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#mnml.acp {
|
||||
user-select: text;
|
||||
-moz-user-select: text;
|
||||
-webkit-user-select: text;
|
||||
-ms-user-select: text;
|
||||
|
||||
.bottom {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
|
||||
input {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,3 @@
|
||||
upstream mnml_dev {
|
||||
server 0.0.0.0:41337;
|
||||
}
|
||||
|
||||
error_log /var/log/mnml/nginx.log;
|
||||
|
||||
upstream mnml_http {
|
||||
@ -21,11 +17,17 @@ map $http_upgrade $connection_upgrade {
|
||||
# DEV
|
||||
server {
|
||||
location / {
|
||||
root /var/lib/mnml/public/current;
|
||||
root /var/lib/mnml/public/client;
|
||||
index index.html;
|
||||
try_files $uri $uri/ index.html;
|
||||
}
|
||||
|
||||
location /acp {
|
||||
root /var/lib/mnml/public/acp;
|
||||
index acp.html;
|
||||
try_files $uri $uri/ acp.html;
|
||||
}
|
||||
|
||||
location /imgs/ {
|
||||
root /var/lib/mnml/public/;
|
||||
try_files $uri $uri/ =404;
|
||||
@ -51,25 +53,3 @@ server {
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
}
|
||||
|
||||
# http -> https
|
||||
server {
|
||||
server_name mnml.gg;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name minimal.gg;
|
||||
return 301 https://mnml.gg$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name cryps.gg;
|
||||
return 301 https://mnml.gg$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name dev.mnml.gg;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
|
||||
@ -396,9 +396,11 @@ impl Instance {
|
||||
|
||||
// if you don't win, you lose
|
||||
// ties can happen if both players forfeit
|
||||
// in this case we just finish the game and
|
||||
// dock them 10k mmr
|
||||
let winner_id = match game.winner() {
|
||||
Some(w) => w.id,
|
||||
None => Uuid::nil(),
|
||||
None => return Ok(self.finish()),
|
||||
};
|
||||
|
||||
for player in game.players.iter() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user