Skip to content

Commit

Permalink
automatically add new user
Browse files Browse the repository at this point in the history
  • Loading branch information
Halcao committed Dec 12, 2017
1 parent 6123f77 commit ce7cb93
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 11 deletions.
53 changes: 47 additions & 6 deletions anyoneServer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,52 @@ app.post('/update', urlencodedParser, function(req, res) {
console.log(req.body);
var list = req.body.list;
// 每一行至少得有17位的 MAC 地址吧
var items = list.split('\\n')
var items = list.replace('\\n', '')
.replace('\n', '')
.split('$')
.filter( str => str.length >= 17)
.map(str => str.split(' '))
.map(arr => ({mac: arr[1], ip: arr[2], defaultName: arr[3]}));
var macData = items.map(e => e.mac);
var newDate = new Date();
newDate.setTime(req.body.date * 1000);

connection.query("SELECT mac FROM user", function(err, result) {
if (err) {
console.log('[SELECT ERROR] - ',err.message);
var response = {
"err_code": err.code,
"msg": err.message,
}
//connection.end();
res.send(JSON.stringify(response));
return;
}
var userList = result.map(e => e.mac);
var newUsers = items.filter(function(e) {
return userList.indexOf(e.mac) < 0;
});
var formatedDate = (new Date ((new Date((new Date(new Date())).toISOString() )).getTime() - ((new Date()).getTimezoneOffset()*60000))).toISOString().slice(0, 19).replace('T', ' ');
for (var user of newUsers) {
connection.query(`INSERT INTO user(id, name, mac, default_name, insert_at) VALUES (0, '${user.defaultName}', '${user.mac}', '${user.defaultName}', '${formatedDate}')`, function(err, result) {
if (err) {
console.log('[SELECT ERROR] - ',err.message);
var response = {
"err_code": err.code,
"msg": err.message,
}
//connection.end();
res.send(JSON.stringify(response));
return;
}
connection.query(`INSERT INTO status(id, is_present, ip, update_at) VALUES (${result.insertId}, 0, '${user.ip}', '${formatedDate}')`);
connection.query(`INSERT INTO stat(id, week_time, total_time, update_at) VALUES (${result.insertId}, 0, 0, '${formatedDate}')`);
});

// connection.query("");
}
});

connection.query("SELECT s.id, u.mac, s.is_present FROM status AS s INNER JOIN user AS u ON u.id = s.id", function(err, result) {
if (err) {
console.log('[SELECT ERROR] - ',err.message);
Expand All @@ -40,7 +78,7 @@ app.post('/update', urlencodedParser, function(req, res) {
// 在线用户
var allPresentMembers = result.filter(e => macData.indexOf(e.mac) >= 0).map(e => e.id);
// 上次在线用户
var lastPresentMembers = result.filter(e => e.isPresent == 1).map(e => e.id)
var lastPresentMembers = result.filter(e => e.is_present == 1).map(e => e.id)

// 新来的用户 allPresentMembers - lastPresentMembers
var newComers = allPresentMembers.filter(function(id) {
Expand Down Expand Up @@ -73,9 +111,12 @@ app.post('/update', urlencodedParser, function(req, res) {
// }
for (var item of items) {
var formatedDate = (new Date ((new Date((new Date(new Date())).toISOString() )).getTime() - ((new Date()).getTimezoneOffset()*60000))).toISOString().slice(0, 19).replace('T', ' ');
var id = result.filter(e => e.mac = item.mac)[0].id;
connection.query(`UPDATE stat SET total_time = total_time + 1, week_time = week_time + 1, update_at = '${formatedDate}' WHERE id = ${id}`);
connection.query(`UPDATE status SET ip = '${item.ip}' WHERE id = ${id}`);
var array = result.filter(e => e.mac === item.mac);
if (array.length == 1) {
var id = array[0].id;
connection.query(`UPDATE stat SET total_time = total_time + 1, week_time = week_time + 1, update_at = '${formatedDate}' WHERE id = ${id}`);
connection.query(`UPDATE status SET ip = '${item.ip}' WHERE id = ${id}`);
}
}

// 响应
Expand All @@ -90,7 +131,7 @@ app.post('/update', urlencodedParser, function(req, res) {
});

app.get('/getPresent', function(req, res) {
connection.query('SELECT u.name FROM status AS s INNER JOIN user AS u WHERE s.is_present = true', function(err, result) {
connection.query('SELECT DISTINCT u.name FROM status AS s INNER JOIN user AS u WHERE s.is_present = true', function(err, result) {
if (err) {
console.log('[SELECT ERROR] - ',err.message);
var response = {
Expand Down
18 changes: 13 additions & 5 deletions task.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
#!/bin/sh
date
list="";
for ip in $(arp | grep -v IP | awk '{print $1}');
do
list=$list"\n"$(grep $ip /tmp/dhcp.leases);
done;
curl -d "list=$list&date=$(date +%s)" https://halcao.me:8080/update
#for ip in $(arp | grep -v IP | awk '{print $1}');
#do
# list=$list"\n"$(grep $ip /tmp/dhcp.leases);
#done;
macList=$(iwinfo rai0 associlist | grep "^[[:alnum:]:]\{17\}" -o | tr '[A-Z]' '[a-z]' | tr '\n' ' ')
macList=$macList' '$(iwinfo ra0 associlist | grep "^[[:alnum:]:]\{17\}" -o | tr '[A-Z]' '[a-z]' | tr '\n' ' ')
for mac in $macList
do
list=$list"$"$(grep $mac /tmp/dhcp.leases)
done
curl -d "list=$list&date=$(date +%s)" halcao.me:8080/update

0 comments on commit ce7cb93

Please sign in to comment.