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
+
+
+
+
+
+
+
+
+
+
+
+
+