Added mac logs, improved mac editing/viewing
This commit is contained in:
		
							parent
							
								
									04764af983
								
							
						
					
					
						commit
						f3498ddcac
					
				
							
								
								
									
										3
									
								
								app/assets/javascripts/mac_logs.js.coffee
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/assets/javascripts/mac_logs.js.coffee
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | # Place all the behaviors and hooks related to the matching controller here. | ||||||
|  | # All this logic will automatically be available in application.js. | ||||||
|  | # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ | ||||||
							
								
								
									
										3
									
								
								app/assets/stylesheets/mac_logs.css.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/assets/stylesheets/mac_logs.css.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | // Place all the styles related to the MacLogs controller here. | ||||||
|  | // They will automatically be included in application.css. | ||||||
|  | // You can use Sass (SCSS) here: http://sass-lang.com/ | ||||||
							
								
								
									
										7
									
								
								app/controllers/mac_logs_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/controllers/mac_logs_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | class MacLogsController < ApplicationController | ||||||
|  | 
 | ||||||
|  | def index | ||||||
|  |   @mac_logs = MacLog.desc.limit(1000) | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | end | ||||||
| @ -8,7 +8,8 @@ def index | |||||||
|   @active_macs = Mac.where(:active => true, :hidden => false) |   @active_macs = Mac.where(:active => true, :hidden => false) | ||||||
|   @active_macs += Mac.where(:active => true, :hidden => nil) |   @active_macs += Mac.where(:active => true, :hidden => nil) | ||||||
|   @hidden_macs = Mac.where(:active => true, :hidden => true) |   @hidden_macs = Mac.where(:active => true, :hidden => true) | ||||||
|   @inactive_macs = Mac.where(:active => false) | 
 | ||||||
|  |   @all_macs = Mac.find(:all, :order => "LOWER(mac)") | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
|   # GET /macs/1 |   # GET /macs/1 | ||||||
| @ -45,8 +46,7 @@ end | |||||||
|   def create |   def create | ||||||
|     @mac = Mac.new(params[:mac]) |     @mac = Mac.new(params[:mac]) | ||||||
|     @mac.user_id = params[:user_id] |     @mac.user_id = params[:user_id] | ||||||
| 
 |     @users = User.all.sort_by(&:name) | ||||||
|     Rails.logger.info @macs.inspect |  | ||||||
| 
 | 
 | ||||||
|     respond_to do |format| |     respond_to do |format| | ||||||
|       if @mac.save |       if @mac.save | ||||||
| @ -64,11 +64,11 @@ end | |||||||
|   def update |   def update | ||||||
|     #Log who updated this |     #Log who updated this | ||||||
|     @mac = Mac.find(params[:id]) |     @mac = Mac.find(params[:id]) | ||||||
|  |     @users = User.all.sort_by(&:name) | ||||||
| 
 | 
 | ||||||
|     respond_to do |format| |     respond_to do |format| | ||||||
|       if @mac.update_attributes(params[:mac]) |       if @mac.update_attributes(params[:mac]) | ||||||
|         Rails.logger.info @mac.inspect |         format.html { redirect_to macs_path, :notice => 'Mac was successfully updated.' } | ||||||
|         format.html { redirect_to macs_path, :notice => 'User certification was successfully updated.' } |  | ||||||
|         format.json { head :no_content } |         format.json { head :no_content } | ||||||
|       else |       else | ||||||
|         format.html { render :action => "edit" } |         format.html { render :action => "edit" } | ||||||
| @ -153,8 +153,7 @@ Rails.logger.info "starting scan..." | |||||||
| 
 | 
 | ||||||
| 	# Scan the existing macs and update each record as necessary | 	# Scan the existing macs and update each record as necessary | ||||||
| 	Mac.find(:all).each { |entry| | 	Mac.find(:all).each { |entry| | ||||||
| 		Rails.logger.info "Existing MAC: "+entry.inspect | 		mac = entry.mac.downcase | ||||||
| 		mac = entry.mac |  | ||||||
| 		ip = entry.ip | 		ip = entry.ip | ||||||
| 		if macs.has_key?(mac) | 		if macs.has_key?(mac) | ||||||
| 			if ! entry.active || ! entry.since | 			if ! entry.active || ! entry.since | ||||||
| @ -185,7 +184,7 @@ Rails.logger.info "starting scan..." | |||||||
| 	macs.each { |mac, ip| | 	macs.each { |mac, ip| | ||||||
| 		Rails.logger.info "Activating new entry #{mac} at #{ip}" if options[:verbose] | 		Rails.logger.info "Activating new entry #{mac} at #{ip}" if options[:verbose] | ||||||
| 		Mac.new(:mac => mac, :ip => ip, :active => 1, :since => Time.now, :refreshed => Time.now).save | 		Mac.new(:mac => mac, :ip => ip, :active => 1, :since => Time.now, :refreshed => Time.now).save | ||||||
| 		MacLog.new(:mac => mac, :ip => ip, :action => "activate").save | 		Rails.logger.info MacLog.new(:mac => mac, :ip => ip, :action => "activate").save | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @log = MacLog.all | @log = MacLog.all | ||||||
| @ -193,4 +192,19 @@ Rails.logger.info "starting scan..." | |||||||
| end #def scan | end #def scan | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def import | ||||||
|  | 
 | ||||||
|  | require 'csv'     | ||||||
|  | 
 | ||||||
|  | csv_text = File.read('mac_log.csv') | ||||||
|  | csv = CSV.parse(csv_text) | ||||||
|  | 
 | ||||||
|  | @output = [] | ||||||
|  | 
 | ||||||
|  | csv.each do |row| | ||||||
|  |   @output += [row[1], Mac.create({:mac => row[0], :note => row[1], :hidden => row[2]}) ] | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | end | ||||||
|  | 
 | ||||||
| end | end | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								app/helpers/mac_logs_helper.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/helpers/mac_logs_helper.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | module MacLogsHelper | ||||||
|  | end | ||||||
| @ -1,4 +1,6 @@ | |||||||
| class Mac < ActiveRecord::Base | class Mac < ActiveRecord::Base | ||||||
|   belongs_to :user |   belongs_to :user | ||||||
|   attr_accessible :active, :ip, :mac, :refreshed, :since, :hidden, :note, :user_id |   attr_accessible :active, :ip, :mac, :refreshed, :since, :hidden, :note, :user_id | ||||||
|  | 
 | ||||||
|  |   validates_uniqueness_of :mac, :case_sensitive => false | ||||||
| end | end | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
| class MacLog < ActiveRecord::Base | class MacLog < ActiveRecord::Base | ||||||
|   attr_accessible :action, :ip, :mac |   attr_accessible :action, :ip, :mac | ||||||
|  | 
 | ||||||
|  |   scope :desc, order("mac_logs.created_at DESC") | ||||||
| end | end | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								app/views/mac_logs/index.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/views/mac_logs/index.html.erb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | <table> | ||||||
|  | <% @mac_logs.each do |mac_log| %> | ||||||
|  |   <tr> | ||||||
|  |   <td><%= mac_log.mac %></td> | ||||||
|  |   <td><%= mac_log.ip %></td> | ||||||
|  |   <td><%= mac_log.action %></td> | ||||||
|  |   <td><%= mac_log.created_at %></td> | ||||||
|  |   </tr> | ||||||
|  | <% end %> | ||||||
|  | </table> | ||||||
							
								
								
									
										1
									
								
								app/views/macs/import.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								app/views/macs/import.html.erb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | <%= @output %> | ||||||
| @ -1,29 +1,42 @@ | |||||||
| <h2>What machines are on our network?</h2> | <h2>What machines are on our network?</h2> | ||||||
|  | <%= link_to "New Mac", new_mac_path %> | ||||||
|  | 
 | ||||||
|  | <ul> | ||||||
| <% @active_macs.each do |mac| %> | <% @active_macs.each do |mac| %> | ||||||
|  | <li> | ||||||
|   <%= mac.user.name unless mac.user.blank? %>   |   <%= mac.user.name unless mac.user.blank? %>   | ||||||
|   <%= mac.mac if mac.user.blank? %> <!--  |   <%= mac.mac if mac.user.blank? && mac.note.blank? %>  | ||||||
|   <%= mac.since %>,  |   <%= mac.note if mac.user.blank? %> -  | ||||||
|   <%= mac.refreshed %>, |   <%= ((Time.now - mac.since) / 1.hour).round(1).to_s+" hours" %> | | ||||||
|   <%= mac.active %>--> | |  | ||||||
|   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> |   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> | ||||||
|  | </li> | ||||||
| <% end %> | <% end %> | ||||||
| <hr> | </ul> | ||||||
|  | 
 | ||||||
|  | <ul style="display: none;"> | ||||||
| <% @hidden_macs.each do |mac| %> | <% @hidden_macs.each do |mac| %> | ||||||
|  | <li> | ||||||
|  |   <%= mac.user.name unless mac.user.blank? %>   | ||||||
|  |   <%= mac.mac if mac.user.blank? && mac.note.blank? %> | ||||||
|  |   <%= mac.note if mac.user.blank? %> -  | ||||||
|  |   <%= ((Time.now - mac.since) / 1.hour).round(1).to_s+" hours" %> | | ||||||
|  |   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> | ||||||
|  | </li> | ||||||
|  | <% end %> | ||||||
|  | </ul> | ||||||
|  | 
 | ||||||
|  | <!-- | ||||||
|  | <% @all_macs.each do |mac| %> | ||||||
|  |   <%= '<span class="hidden">' if mac.hidden? %> | ||||||
|  |   <%= mac.mac.downcase %>  | ||||||
|  |   (<%= mac.note %>)  | ||||||
|   <%= mac.user.name unless mac.user.blank? %> |   <%= mac.user.name unless mac.user.blank? %> | ||||||
|   <%= mac.mac if mac.user.blank? %>  |  | ||||||
|   (<%= mac.note %>) <!-- |  | ||||||
|   <%= mac.since %>,  |   <%= mac.since %>,  | ||||||
|   <%= mac.refreshed %>, |   <%= mac.refreshed %>, | ||||||
|   <%= mac.active %>--> | |   <%= mac.active %> | | ||||||
|   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> |  | ||||||
| <% end %> |  | ||||||
| <hr> |  | ||||||
| <% @inactive_macs.each do |mac| %> |  | ||||||
|   <%= mac.user.name unless mac.user.blank? %>   |  | ||||||
|   <%= mac.mac if mac.user.blank? %>  |  | ||||||
|   (<%= mac.note %>) <!-- |  | ||||||
|   <%= mac.since %>,  |  | ||||||
|   <%= mac.refreshed %>, |  | ||||||
|   <%= mac.active %>--> | |  | ||||||
|   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> |   <%= link_to 'Edit', edit_mac_path(mac) %> <br/> | ||||||
|  |   <%= '</span>' if mac.hidden? %> | ||||||
| <% end %> | <% end %> | ||||||
|  | --> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -22,4 +22,4 @@ production: | |||||||
|   adapter: sqlite3 |   adapter: sqlite3 | ||||||
|   database: db/production.sqlite3 |   database: db/production.sqlite3 | ||||||
|   pool: 5 |   pool: 5 | ||||||
|   timeout: 5000 |   timeout: 300000 | ||||||
|  | |||||||
| @ -28,8 +28,11 @@ Dooraccess::Application.routes.draw do | |||||||
|   match 'door_logs/auto_download' => 'door_logs#auto_download', :as => :auto_download |   match 'door_logs/auto_download' => 'door_logs#auto_download', :as => :auto_download | ||||||
| 
 | 
 | ||||||
|   match 'macs/scan' => 'macs#scan' |   match 'macs/scan' => 'macs#scan' | ||||||
|  |   match 'macs/import' => 'macs#import' | ||||||
|   resources :macs |   resources :macs | ||||||
| 
 | 
 | ||||||
|  |   resources :mac_logs | ||||||
|  | 
 | ||||||
|   root :to => "home#index" |   root :to => "home#index" | ||||||
| 
 | 
 | ||||||
|   # The priority is based upon order of creation: |   # The priority is based upon order of creation: | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								test/functional/mac_logs_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/functional/mac_logs_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | require 'test_helper' | ||||||
|  | 
 | ||||||
|  | class MacLogsControllerTest < ActionController::TestCase | ||||||
|  |   # test "the truth" do | ||||||
|  |   #   assert true | ||||||
|  |   # end | ||||||
|  | end | ||||||
							
								
								
									
										4
									
								
								test/unit/helpers/mac_logs_helper_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/unit/helpers/mac_logs_helper_test.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | require 'test_helper' | ||||||
|  | 
 | ||||||
|  | class MacLogsHelperTest < ActionView::TestCase | ||||||
|  | end | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user