From 7c4d21e94284eadff989cfee466637a110d27320 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Thu, 16 Mar 2017 12:32:33 +0000 Subject: [PATCH] generators/images/qr_code: creates a QR code out of a string(usually a flag) and outputs it as a .png represented as a base64 string. --- Gemfile | 1 + Gemfile.lock | 4 ++ .../image/qr_code/manifests/.no_puppet | 0 modules/generators/image/qr_code/qr_code.pp | 0 .../image/qr_code/secgen_local/local.rb | 37 +++++++++++++++++++ .../image/qr_code/secgen_metadata.xml | 26 +++++++++++++ .../generator_examples/qr_code_generator.xml | 21 +++++++++++ 7 files changed, 89 insertions(+) create mode 100644 modules/generators/image/qr_code/manifests/.no_puppet create mode 100644 modules/generators/image/qr_code/qr_code.pp create mode 100644 modules/generators/image/qr_code/secgen_local/local.rb create mode 100644 modules/generators/image/qr_code/secgen_metadata.xml create mode 100644 scenarios/examples/parameterised_examples/generator_examples/qr_code_generator.xml diff --git a/Gemfile b/Gemfile index 97e5eecaa..ea4e80fda 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ gem 'wordlist' gem 'faker' gem 'forgery' gem 'redcarpet' +gem 'rqrcode' #development only gems go here group :test, :development do diff --git a/Gemfile.lock b/Gemfile.lock index bf72394ad..e5e2ec2ee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,6 +2,7 @@ GEM remote: https://rubygems.org/ specs: CFPropertyList (2.2.8) + chunky_png (1.3.8) facter (2.4.6) CFPropertyList (~> 2.2.6) faker (1.6.6) @@ -44,6 +45,8 @@ GEM rdoc (4.2.2) json (~> 1.4) redcarpet (3.4.0) + rqrcode (0.10.1) + chunky_png (~> 1.0) rsync (1.0.9) semantic_puppet (0.1.3) spidr (0.6.0) @@ -66,6 +69,7 @@ DEPENDENCIES rake rdoc redcarpet + rqrcode wordlist yard diff --git a/modules/generators/image/qr_code/manifests/.no_puppet b/modules/generators/image/qr_code/manifests/.no_puppet new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/image/qr_code/qr_code.pp b/modules/generators/image/qr_code/qr_code.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/generators/image/qr_code/secgen_local/local.rb b/modules/generators/image/qr_code/secgen_local/local.rb new file mode 100644 index 000000000..a35a1a727 --- /dev/null +++ b/modules/generators/image/qr_code/secgen_local/local.rb @@ -0,0 +1,37 @@ +#!/usr/bin/ruby +require 'rqrcode' +require_relative '../../../../../lib/objects/local_string_encoder.rb' +class QRCodeGenerator < StringEncoder + attr_accessor :string_to_mask + + def initialize + super + self.module_name = 'QR Code Generator' + self.string_to_mask = [] + end + + def encode_all + qr_code = RQRCode::QRCode.new(self.string_to_mask[0]) + image = qr_code.as_png + self.outputs << Base64.strict_encode64(image.to_blob) + end + + def get_options_array + super + [['--string_to_mask', GetoptLong::REQUIRED_ARGUMENT]] + end + + def process_options(opt, arg) + super + case opt + when '--string_to_mask' + self.string_to_mask << arg; + end + end + + + def encoding_print_string + 'String to mask: ' + self.string_to_mask.first + end +end + +QRCodeGenerator.new.run \ No newline at end of file diff --git a/modules/generators/image/qr_code/secgen_metadata.xml b/modules/generators/image/qr_code/secgen_metadata.xml new file mode 100644 index 000000000..902203517 --- /dev/null +++ b/modules/generators/image/qr_code/secgen_metadata.xml @@ -0,0 +1,26 @@ + + + + QR Code Generator + Thomas Shaw + MIT + Generates a QR code image from an input string. + + image_generator + qr_code_generator + local_calculation + linux + windows + + string_to_mask + + + + + + + base64_encoded_image + + \ No newline at end of file diff --git a/scenarios/examples/parameterised_examples/generator_examples/qr_code_generator.xml b/scenarios/examples/parameterised_examples/generator_examples/qr_code_generator.xml new file mode 100644 index 000000000..682e957fa --- /dev/null +++ b/scenarios/examples/parameterised_examples/generator_examples/qr_code_generator.xml @@ -0,0 +1,21 @@ + + + + + + example_server + + + + + + + + + + + + +