add some more routes

This commit is contained in:
karl.hudgell 2021-02-13 16:23:30 +00:00
parent c5130ed93f
commit 1e18f0d578
9 changed files with 234 additions and 17 deletions

3
app.js
View File

@ -7,6 +7,7 @@ var logger = require('morgan');
var indexRouter = require('./routes/index');
var streamsRouter = require('./routes/getStreams');
var usersRouter = require('./routes/postUser')
var singleUserCheck = require('./routes/singleCheck')
var app = express();
// const basicAuth = require('express-basic-auth')
@ -24,7 +25,7 @@ app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/getStreams', streamsRouter);
app.use('/postUser', usersRouter);
app.use('/singleCheck', singleUserCheck)
// app.use(basicAuth({
// users: { 'BBLBTV': 'BBLBTV' },
// challenge: true,

View File

@ -12,16 +12,19 @@ class App extends Component {
<section class="container">
<div class="left-half">
<article>
<h1>Servers</h1>
{this.state.streams.map(stream =>
<div key={stream.StreamName}>{stream.StreamName} - {stream.StreamURL}</div>
)}
<h1>User Login</h1>
<p>
I am a user login
</p>
</article>
</div>
<div class="right-half">
<article>
<h1>Right Half</h1>
<p>If your knees aren't green by the end of the day, you ought to seriously re-examine your life.</p>
<h1>Stream Details</h1>
{this.state.streams.map(stream =>
<div key={stream.StreamName}>{stream.StreamName} - {stream.StreamURL}</div>
)}
</article>
</div>
</section>

99
client/src/login.js Normal file
View File

@ -0,0 +1,99 @@
import React, { useState, useEffect } from 'react';
import ReactDOM from "react-dom";
import axios from 'axios';
function View (props) {
const { screen, setScreen } = props;
const [data, setData] = useState();
const deleteCookie = async () => {
try {
await axios.get('/clear-cookie');
setScreen('auth');
} catch (e) {
console.log(e);
}
};
const getData = async () => {
try {
const res = await axios.get('/get-data');
console.log(res.data)
setData(res.data);
} catch (e) {
console.log(e);
}
}
return (
<div>
<p>{screen}</p>
<p>{data}</p>
<button onClick={getData}>Get Data</button>
<button onClick={deleteCookie}>Logout</button>
</div>
);
}
function App() {
const [screen, setScreen] = useState('auth');
const [username, setUsername] = useState();
const [password, setPassword] = useState();
const auth = async () => {
try {
const res = await axios.get('/authenticate', { auth: { username, password } });
if (res.data.screen !== undefined) {
setScreen(res.data.screen);
}
} catch (e) {
console.log(e);
}
};
const readCookie = async () => {
try {
const res = await axios.get('/read-cookie');
if (res.data.screen !== undefined) {
setScreen(res.data.screen);
}
} catch (e) {
setScreen('auth');
console.log(e);
}
};
useEffect(() => {
readCookie();
}, []);
return (
<div className="App">
{screen === 'auth'
? <div>
<label>Username: </label>
<br/>
<input type="text" onChange={e => setUsername(e.target.value)} />
<br/>
<label>Password: </label>
<br/>
<input type="password" onChange={e => setPassword(e.target.value)} />
<br/>
<button onClick={auth}>Login</button>
</div>
: <View screen={screen} setScreen={setScreen} />
}
</div>
);
}
export default App;
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

15
docker-compose-db.yml Normal file
View File

@ -0,0 +1,15 @@
version: "3"
services:
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
adminer:
image: adminer
restart: always
ports:
- 8080:8080

17
lib/mysql.js Normal file
View File

@ -0,0 +1,17 @@
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
password: 'example',
database: 'BBLB_DNS',
insecureAuth: true
})
connection.connect(function (err) {
if (err) throw err;
});
module.exports = connection;

63
package-lock.json generated
View File

@ -109,6 +109,11 @@
"safe-buffer": "5.1.2"
}
},
"bignumber.js": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
"integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
},
"body-parser": {
"version": "1.18.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
@ -255,6 +260,11 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"css": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
@ -510,6 +520,11 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"jade": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz",
@ -640,6 +655,17 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mysql": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
"integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
"requires": {
"bignumber.js": "9.0.0",
"readable-stream": "2.3.7",
"safe-buffer": "5.1.2",
"sqlstring": "2.3.1"
}
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@ -694,6 +720,11 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"promise": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
@ -746,6 +777,20 @@
"unpipe": "1.0.0"
}
},
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
@ -826,11 +871,24 @@
"amdefine": ">=0.0.4"
}
},
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"transformers": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
@ -910,6 +968,11 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",

View File

@ -9,11 +9,12 @@
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"express-basic-auth": "^1.2.0",
"fs": "0.0.1-security",
"got": "^11.8.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"morgan": "~1.9.1",
"express-basic-auth": "^1.2.0",
"fs": "0.0.1-security",
"got": "^11.8.1"
"mysql": "^2.18.1"
}
}

View File

@ -1,15 +1,19 @@
var express = require('express');
var router = express.Router();
const { singleCheck } = require('../lib/checker')
const sql = require('../lib/mysql')
/* POST postUser page. */
router.post('/', async function (req, res, next) {
let postedUsername = req.body.username
let data = await singleCheck(postedUsername)
res.send(data);
sql.query(`SELECT * FROM users WHERE username = '${req.body.username}'`, function (err, tt) {
if (err) {
console.log("User Not Found: ", err);
result(err, null);
}
else {
console.log(tt[0]);
res.send(tt[0]);
}
});
});
module.exports = router;

14
routes/singleCheck.js Normal file
View File

@ -0,0 +1,14 @@
var express = require('express');
var router = express.Router();
const { singleCheck } = require('../lib/checker')
/* POST postUser page. */
router.post('/', async function (req, res, next) {
let postedUsername = req.body.username
let data = await singleCheck(postedUsername)
res.send(data);
});
module.exports = router;