add some more routes
This commit is contained in:
parent
c5130ed93f
commit
1e18f0d578
3
app.js
3
app.js
@ -7,6 +7,7 @@ var logger = require('morgan');
|
|||||||
var indexRouter = require('./routes/index');
|
var indexRouter = require('./routes/index');
|
||||||
var streamsRouter = require('./routes/getStreams');
|
var streamsRouter = require('./routes/getStreams');
|
||||||
var usersRouter = require('./routes/postUser')
|
var usersRouter = require('./routes/postUser')
|
||||||
|
var singleUserCheck = require('./routes/singleCheck')
|
||||||
var app = express();
|
var app = express();
|
||||||
// const basicAuth = require('express-basic-auth')
|
// const basicAuth = require('express-basic-auth')
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ app.use(express.static(path.join(__dirname, 'public')));
|
|||||||
app.use('/', indexRouter);
|
app.use('/', indexRouter);
|
||||||
app.use('/getStreams', streamsRouter);
|
app.use('/getStreams', streamsRouter);
|
||||||
app.use('/postUser', usersRouter);
|
app.use('/postUser', usersRouter);
|
||||||
|
app.use('/singleCheck', singleUserCheck)
|
||||||
// app.use(basicAuth({
|
// app.use(basicAuth({
|
||||||
// users: { 'BBLBTV': 'BBLBTV' },
|
// users: { 'BBLBTV': 'BBLBTV' },
|
||||||
// challenge: true,
|
// challenge: true,
|
||||||
|
@ -12,16 +12,19 @@ class App extends Component {
|
|||||||
<section class="container">
|
<section class="container">
|
||||||
<div class="left-half">
|
<div class="left-half">
|
||||||
<article>
|
<article>
|
||||||
<h1>Servers</h1>
|
<h1>User Login</h1>
|
||||||
{this.state.streams.map(stream =>
|
<p>
|
||||||
<div key={stream.StreamName}>{stream.StreamName} - {stream.StreamURL}</div>
|
I am a user login
|
||||||
)}
|
</p>
|
||||||
|
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-half">
|
<div class="right-half">
|
||||||
<article>
|
<article>
|
||||||
<h1>Right Half</h1>
|
<h1>Stream Details</h1>
|
||||||
<p>If your knees aren't green by the end of the day, you ought to seriously re-examine your life.</p>
|
{this.state.streams.map(stream =>
|
||||||
|
<div key={stream.StreamName}>{stream.StreamName} - {stream.StreamURL}</div>
|
||||||
|
)}
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
99
client/src/login.js
Normal file
99
client/src/login.js
Normal 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
15
docker-compose-db.yml
Normal 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
17
lib/mysql.js
Normal 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
63
package-lock.json
generated
@ -109,6 +109,11 @@
|
|||||||
"safe-buffer": "5.1.2"
|
"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": {
|
"body-parser": {
|
||||||
"version": "1.18.3",
|
"version": "1.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
"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": {
|
"css": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
||||||
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
"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": {
|
"jade": {
|
||||||
"version": "1.11.0",
|
"version": "1.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
"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": {
|
"negotiator": {
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
"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": {
|
"promise": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
|
||||||
@ -746,6 +777,20 @@
|
|||||||
"unpipe": "1.0.0"
|
"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": {
|
"repeat-string": {
|
||||||
"version": "1.6.1",
|
"version": "1.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
||||||
@ -826,11 +871,24 @@
|
|||||||
"amdefine": ">=0.0.4"
|
"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": {
|
"statuses": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
|
"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": {
|
"transformers": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
"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": {
|
"utils-merge": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||||
|
@ -9,11 +9,12 @@
|
|||||||
"cookie-parser": "~1.4.4",
|
"cookie-parser": "~1.4.4",
|
||||||
"debug": "~2.6.9",
|
"debug": "~2.6.9",
|
||||||
"express": "~4.16.1",
|
"express": "~4.16.1",
|
||||||
|
"express-basic-auth": "^1.2.0",
|
||||||
|
"fs": "0.0.1-security",
|
||||||
|
"got": "^11.8.1",
|
||||||
"http-errors": "~1.6.3",
|
"http-errors": "~1.6.3",
|
||||||
"jade": "~1.11.0",
|
"jade": "~1.11.0",
|
||||||
"morgan": "~1.9.1",
|
"morgan": "~1.9.1",
|
||||||
"express-basic-auth": "^1.2.0",
|
"mysql": "^2.18.1"
|
||||||
"fs": "0.0.1-security",
|
|
||||||
"got": "^11.8.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
|
||||||
const { singleCheck } = require('../lib/checker')
|
const sql = require('../lib/mysql')
|
||||||
|
|
||||||
/* POST postUser page. */
|
/* POST postUser page. */
|
||||||
router.post('/', async function (req, res, next) {
|
router.post('/', async function (req, res, next) {
|
||||||
let postedUsername = req.body.username
|
sql.query(`SELECT * FROM users WHERE username = '${req.body.username}'`, function (err, tt) {
|
||||||
|
if (err) {
|
||||||
let data = await singleCheck(postedUsername)
|
console.log("User Not Found: ", err);
|
||||||
|
result(err, null);
|
||||||
res.send(data);
|
}
|
||||||
|
else {
|
||||||
|
console.log(tt[0]);
|
||||||
|
res.send(tt[0]);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
14
routes/singleCheck.js
Normal file
14
routes/singleCheck.js
Normal 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;
|
Loading…
x
Reference in New Issue
Block a user