diff --git a/.travis.yml b/.travis.yml index a2ba2f0..7751b13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,8 @@ before_install: script: - sleep 30 - docker exec "radius1" /bin/bash /usr/src/build/test-radius.sh - - docker exec "radius1" /bin/bash /usr/src/build/load-test-data.sh + - docker exec "radius1" /usr/bin/php /usr/src/build/seed-test-data.php --username=test@testing.com --password=testing123 --startdate="2016-01-01" --totalgb=10 --nasip="3.3.3.3" --quotagb=10 --quotadate="2016-01-01" --annivsday=1 + - docker exec "radius1" /usr/bin/php /usr/src/build/test-seed.php --username=test@testing.com --password=testing123 --totalgb=10 - docker exec "radius1" radtest test@testing.com testing123 127.0.0.1 0 testing123 - radtest test@testing.com testing123 127.0.0.1 0 password diff --git a/Dockerfile b/Dockerfile index 122a3ed..2077e9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,8 +24,12 @@ COPY ./config/sql/mysql/dialup.conf /etc/freeradius/sql/mysql/dialup.conf RUN ln -s /etc/freeradius/sites-available/sql /etc/freeradius/sites-enabled/sql COPY ./src/load-test-data.sh /usr/src/build/load-test-data.sh +COPY ./src/seed-test-data.php /usr/src/build/seed-test-data.php +COPY ./src/test-seed.php /usr/src/build/test-seed.php COPY ./sql/test-data.sql /usr/src/build/sql/test-data.sql RUN chmod 755 /usr/src/build/load-test-data.sh +RUN chmod 755 /usr/src/build/seed-test-data.php +RUN chmod 755 /usr/src/build/test-seed.php RUN chmod 755 /usr/local/bin/summarise_data.php RUN ln -s /usr/local/bin/summarise_data.php /etc/cron.hourly/99.summarise_radius_data.php diff --git a/src/seed-test-data.php b/src/seed-test-data.php new file mode 100755 index 0000000..ff5d08b --- /dev/null +++ b/src/seed-test-data.php @@ -0,0 +1,176 @@ +#!/usr/bin/php +query($query); + if (!$result) { + die($db->error); + } + + // update userinfo + $query = "INSERT into `userinfo` (`username`) values('$username')"; + echo $query.PHP_EOL; + $result = $db->query($query); + if (!$result) { + die($db->error); + } + + // update user_billing_detail + $query = "INSERT into `user_billing_detail` (`username`, `anniversary_day`, `action`, `status`) values('$username', '$anniversary_day', '$action', '$status')"; + echo $query.PHP_EOL; + $result = $db->query($query); + if (!$result) { + die($db->error); + } + + // update user_quota + if($quota != 0 && $quota_date != "") { + $query = "INSERT into `user_quota` (`username`, `quota_date`, `quota`) values('$username', '$quota_date', '$quota')"; + echo $query.PHP_EOL; + $result = $db->query($query); + if (!$result) { + die($db->error); + } + } + + // diable triggers + $result = $db->query("SET @disable_triggers = 1"); + if (!$result) { + die($db->error); + } + + // update radacct session dummy row + $acctsessionid = bin2hex(openssl_random_pseudo_bytes(4)); + $acctuniqueid = bin2hex(openssl_random_pseudo_bytes(8)); + //echo "accsessionid: ".$acctsessionid.PHP_EOL; + //echo "acctuniqueid: ".$acctuniqueid.PHP_EOL; + + $query = "INSERT INTO `radacct` (`acctsessionid`, `acctuniqueid`, `UserName`, `GroupName`, `realm`, `NASIPAddress`, `NASPortId`, `nasporttype`, `AcctStartTime`, `AcctStopTime`, `AcctSessionTime`, `acctauthentic`, `connectinfo_start`, `connectinfo_stop`, `AcctInputOctets`, `AcctOutputOctets`, `CalledStationId`, `CallingStationId`, `acctterminatecause`, `servicetype`, `framedprotocol`, `FramedIPAddress`, `acctstartdelay`, `acctstopdelay`, `xascendsessionsvrkey`) + values('$acctsessionid', '$acctuniqueid', '$username', '', '', '$nasip', '', 'ISDN', '$account_starttime', '$account_endtime', '$account_sessiontime', 'RADIUS', '155520000', '155520000', '$account_inputoctects', '$accout_outputoctects', '', 'foobar', 'Port-Error', 'Framed-User', 'PPP', '127.0.0.15', 0, 0, '')"; + echo $query.PHP_EOL; + $result = $db->query($query); + if (!$result) { + die($db->error); + } + + // add linear data to user_data table + $update= "INSERT into `user_data` (`username`, `datain`, `dataout`, `totaldata`, `data_hour`, `date`) values(?, ?, ?, ?, ?, ?)"; + $stmt=$db->prepare($update); + if (!$stmt) { + die($db->error); + } + $stmt->bind_param("siiiis", $username, $datain, $dataout, $totaldata, $data_hour, $date); + $stmt->execute(); + + $start = strtotime($start_date); + $end = strtotime($end_date); + $pointer = strtotime($start_date); + + $data_slice = floor($total_amount / (abs($end - $start) / 3600)); + $datain = floor($data_slice * 0.4); + $dataout = $data_slice - $datain; + $totaldata = $data_slice; + + //echo 'total: '.$total_amount.PHP_EOL; + //echo 'slice: '.$data_slice.PHP_EOL; + + $restdata = $total_amount; + while ($restdata > $data_slice) { + + $pointer = $pointer + 60*60; + $data_hour = date('H', $pointer); + $date = date('Y-m-d', $pointer); + echo $date.' '.$data_hour.PHP_EOL; + $stmt->execute(); + if (!$stmt) { + die($db->error); + } + + $restdata -= $data_slice; + + } + + // process the rest + $datain = $restdata; + $dataout = 0; + $totaldata = $restdata; + $pointer = $pointer + 60*60; + $data_hour = date('H', $pointer); + $date = date('Y-m-d', $pointer); + echo $date.' '.$data_hour.' '.$totaldata.' '.$datain.PHP_EOL; + $stmt->execute(); + if (!$stmt) { + die($db->error); + } + + // enable triggers + $result = $db->query("SET @disable_triggers = NULL"); + if (!$result) { + die($db->error); + } + +?> diff --git a/src/test-seed.php b/src/test-seed.php new file mode 100755 index 0000000..be7e17f --- /dev/null +++ b/src/test-seed.php @@ -0,0 +1,76 @@ +#!/usr/bin/php +query($query); + if ($result->num_rows != 1) { + exit(1); + } + + // update userinfo + $query = "SELECT * FROM `userinfo` WHERE username='$username'"; + echo $query.PHP_EOL; + $result = $db->query($query); + if ($result->num_rows != 1) { + exit(1); + } + + // update user_billing_detail + $query = "SELECT * FROM `user_billing_detail` WHERE username='$username'"; + echo $query.PHP_EOL; + $result = $db->query($query); + if ($result->num_rows != 1) { + exit(1); + } + + // update user_quota + $query = "SELECT * FROM `user_quota` WHERE username='$username'"; + echo $query.PHP_EOL; + $result = $db->query($query); + if ($result->num_rows != 1) { + exit(1); + } + + $query = "SELECT * FROM `radacct` WHERE username='$username'"; + echo $query.PHP_EOL; + $result = $db->query($query); + if ($result->num_rows != 1) { + exit(1); + } + + $query = "SELECT SUM(`totaldata`) as totalsum FROM `user_data` WHERE username='$username'"; + echo $query.PHP_EOL; + $result = $db->query($query); + $row = $result->fetch_assoc(); + echo $row['totalsum']." == ".$total_amount.PHP_EOL; + if($row['totalsum'] != $total_amount) { + exit(1); + } + + echo "success!".PHP_EOL; + exit(0); + +?>