Different stats from ciphers & protocols

stats
aeris 12 months ago
parent b4daa4a66e
commit aeebe9096a
  1. 3
      .rspec
  2. 24
      app/lib/matomo.rb
  3. 29
      bin/rspec
  4. 33
      bin/stats
  5. 7
      test/controllers/statistics_controller_test.rb

@ -0,0 +1,3 @@
--require spec_helper
--format progress
--format html --out tmp/rspec.html

@ -0,0 +1,24 @@
class Matomo
module Helpers
def matomo_tag
config = Matomo
return unless config.enabled?
render partial: 'matomo', locals: { config: config }
end
end
cattr_reader :url, :path, :site
def self.load
@@url = ENV['MATOMO_URL']
@@site = ENV['MATOMO_SITE']
@@disabled = ENV['MATOMO_DISABLED']
end
def self.enabled?
@@disabled.nil? && self.url && self.site
end
ActionView::Base.include Helpers
self.load
end

@ -0,0 +1,29 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
#
# This file was generated by Bundler.
#
# The application 'rspec' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)
bundle_binstub = File.expand_path("../bundle", __FILE__)
if File.file?(bundle_binstub)
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
load(bundle_binstub)
else
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
end
end
require "rubygems"
require "bundler/setup"
load Gem.bin_path("rspec-core", "rspec")

@ -82,16 +82,35 @@ Stat.create! :request_per_service, { labels: services.keys, dataset: services.va
# grade per service for https, smtp, tls and xmpp
%i[https smtp tls xmpp].each do |service_name|
services = Analysis.where(service: service_name, pending: false)
services = Analysis.where service: service_name, pending: false
grades = %w[A+ A B+ B C+ C D E F G].collect { |g| [g, 0] }.to_h
services.each do |service|
next unless (result = service.result)
result.each do |r|
next unless (grade = r['grade'])
grades[grade] += 1 if grades.has_key?(grade)
if (g = service.grade)
grades[g] += 1
end
if (t = service.tls)
tls[t] += 1
end
if (c = service.ciphers)
ciphers[c] += 1
end
if (p = service.pfs)
pfs[p] += 1
end
end
Stat.create! "grades_for_#{service_name.to_s}", grades
ap "grades_for_#{service}" => grades
Stat.create! "grades_for_#{service}", grades
ap "tls_for_#{service}" => tls
Stat.create! "tls_for_#{service}", tls
ap "ciphers_for_#{service}" => ciphers
Stat.create! "ciphers_for_#{service}", ciphers
ap "pfs_for_#{service}" => pfs
Stat.create! "pfs_for_#{service}", pfs
end

@ -1,7 +0,0 @@
require "test_helper"
class StatisticsControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end
Loading…
Cancel
Save