From 8caa7c227b4360da6baf0bfc93967a8b1e3ec889 Mon Sep 17 00:00:00 2001 From: Jaroslav Drzik Date: Thu, 21 Nov 2019 11:17:01 +0100 Subject: [PATCH] Logging.php - apc cache and insert to db - seeder - users table add columns --- app/Http/Controllers/Logging.php | 86 ++++++++++++++++--- .../2014_10_12_000000_create_users_table.php | 2 + database/seeds/DatabaseSeeder.php | 57 +++++++++++- 3 files changed, 131 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Logging.php b/app/Http/Controllers/Logging.php index 1ad1b36..fc1a88b 100644 --- a/app/Http/Controllers/Logging.php +++ b/app/Http/Controllers/Logging.php @@ -10,12 +10,58 @@ class Logging extends Controller private $_items = [ 'netstat_sent' => 'i', 'netstat_recv' => 'i', 'memory_free' => 'f', 'memory_total' => 'f', 'memory_used' => 'f', 'disk_free' => 'B', 'disk_percent' => 'f', 'disk_used' => 'B', 'disk_total' => 'B', 'processes' => 'i', 'temp' => 'i', 'username' =>'s', 'computer' => 's']; - private $_values = []; + private $_values = []; + private $_ucache = []; + private $_ccache = []; public function __construct() { - + $this->set_cache(); } + private function set_cache() { + + $this->_ucache = \apcu_fetch('users',$ret); + if ($ret == false) { + $q = DB::table('users')->select('id', 'name')->get(); + foreach ($q as $v) { + $this->_ucache[$v->name] = $v->id; + } + \apcu_add('users',$this->_ucache); + } + $this->_ccache = \apcu_fetch('computers',$ret); + if ($ret == false ) { + $q = DB::table('computers')->select('id', 'computer')->get(); + foreach ($q as $v) { + $this->_ucache[$v->computer] = $v->id; + } + \apcu_add('computers',$this->_ccache); + } + } + + private function get_computer_id($comp){ + if ($this->_ccache[$comp]) { + return $this->_ccache[$comp]; + } + + $id = DB::table('computers')->insertGetId(['computer' => $comp]); + $this->_ccache[$comp] = $id; + + \apcu_add('computers',$this->_ccache); + return $id; + } + + private function get_user_id($user) { + if ($this->_ucache[$user]) { + return $this->_ucache[$user]; + } + + $id = DB::table('users')->insertGetId(['name' => $user]); + $this->_ucache[$user] = $id; + + \apcu_add('users',$this->_ucache); + return $id; + } + function conv_bytes($v) { $units = explode(' ', ' K M G T P E Z Y'); @@ -61,18 +107,32 @@ class Logging extends Controller $this->_values[$k] = $val; } - } + } - public function log(Request $request) { - $data = json_decode($request->getContent(), true); - $v = $data["values"]; - $i = $data["items"]; - - $this->parse($v); + public function log(Request $request) { + $data = json_decode($request->getContent(), true); + $v = $data["values"]; + $i = $data["items"]; - var_export($this->_values); + $this->parse($v); + + $ia = array_filter($this->_values, function($v) { + return $v != 's'; + }); - return "OK"; - //DB::insert('insert into values (user,computer,recv,send) values (?, ?, ?, ?)', [$u, $c, $r, $s]); - } + $cid = $this->get_computer_id($this->_values["computer"]); + $uid = $this->get_user_id($this->_values["username"]); + + $ia["computer_id"] = $cid; + DB::table('values')->insert($ia); + + $uipa = []; + $uipa["computer_id"] = $cid; + $uipa["user_id"] = $uid; + $uipa["ip"] = $_SERVER['REMOTE_ADDR']; + + DB::table('user_ip')->insert($uipa); + + return "OK"; + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 3660f93..9b8088c 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -18,6 +18,8 @@ class CreateUsersTable extends Migration $table->string('name'); $table->string('email')->unique(); $table->string('password'); + $table->string('full_name'); + $table->string('ou'); $table->rememberToken(); $table->timestamps(); diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index e119db6..f867351 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -2,6 +2,32 @@ use Illuminate\Database\Seeder; +function csv_to_array($filename='', $delimiter=',') +{ + if(!file_exists($filename) || !is_readable($filename)) + return FALSE; + + $header = NULL; + $data = array(); + + if (($handle = fopen($filename, 'r')) !== FALSE) + { + while (($str = fgets($handle, 1000)) !== FALSE) + { + $str = iconv( "Windows-1250", "UTF-8", $str); + + $row = str_getcsv ($str,$delimiter); + if(!$header) + $header = $row; + else + $data[] = array_combine($header, $row); + } + fclose($handle); + } + return $data; +} + + class DatabaseSeeder extends Seeder { /** @@ -11,6 +37,35 @@ class DatabaseSeeder extends Seeder */ public function run() { - // $this->call(UsersTableSeeder::class); + $this->call('UsersTableSeeder'); } } + +class UsersTableSeeder extends Seeder { + + public function run() + { + DB::table('users')->delete(); + $aa = csv_to_array('C:\\Devel\\Users.csv',';'); + $na = []; + + foreach ($aa as $r) { + $s = $r["MENO"]; + $a = explode(" ", $s); + $a[0] = str_slug($a[0]); + $a[1] = str_slug($a[1]); + + $l = strtolower($a[0]); + $r["PASS"] = Hash::make(strtoupper($a[1][0]).$r["OC"].$a[0][0]); + $r["EMAIL"] = ucfirst($a[1]).".".ucfirst($a[0])."@minv.sk"; + $r["LOGIN"] = $l.$r["OC"]; + $na[] = $r; + + } + + foreach ($na as $r) { + DB::insert('insert into users (name,full_name,email,password,ou) values (?, ?, ?, ?, ?)', [$r["LOGIN"], $r["MENO"],$r["EMAIL"], $r["PASS"], $r["OU"]]); + } + } + +} \ No newline at end of file