embed pdf in mvc view : Convert pdf to html form Library SDK component .net asp.net web page mvc dlj2516-part131

WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
61
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
61
of your Hiera values. If you have a 
lot of values for the nginx example 
and you want to separate them for 
manageability, you simply can move 
them to the /etc/puppet/hieradata/
ENVIRONMENTPROD\STAGE\DEV 
nginx.yaml file. Finally, as a default, 
Hiera will check for the value in 
defaults.yaml at the top of the 
hieradata directory.
Your Puppet manifest for this lookup 
should look something like this:
modules/nginx/manifests/credentials.pp 
class nginx::credentials ( 
basic_auth = 'some_default', 
){}
This class, when included, will 
pull the value from Hiera and can 
be used whenever included in your 
manifests. The value set here of 
some_default
is just a placeholder; 
Hiera will override anything set in a 
parameterized class. In fact, if you 
have a class you are thinking about 
converting to pull data from Hiera, 
just start by moving one variable 
from the class definition in {} to a 
parameterized section in (), and 
Puppet will perform a Hiera lookup 
on that variable. You even can leave 
the existing definition intact, because 
Hiera will override it. This kind of 
Hiera lookup is called Automatic 
Parameter Lookup and is one of 
several ways to pull data from Hiera, 
but it’s by far the most common in 
practice. You also can specify a Hiera 
lookup with:
modules/nginx/manifests/credentials.pp 
class nginx::credentials ( 
basic_auth = hiera('nginx::credentials::basic_auth'), 
){}
These will both default to a priority 
lookup method in the Hiera data files. 
This means that Hiera will return the 
value of the first match and stop 
looking further. This is usually the 
only behavior you want, and it’s a 
reasonable default. There are two 
lookup methods worth mentioning: 
hiera_array
and 
hiera_hash
hiera_array
will find all of the 
matching values in the files of the 
hierarchy and combine them in an 
array. In the example hierarchy, this 
would enable you to look up all values 
for a single key for both the node 
and the environment—for example, 
adding an additional DNS search 
path for one host’s /etc/resolv.conf. 
To use a 
hiera_array
lookup, you 
must define the lookup type explicitly 
Convert pdf to html form - Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
convert pdf to url online; convert pdf into html file
Convert pdf to html form - VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
attach pdf to html; online pdf to html converter
62
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
FEATURE  Using Hiera with Puppet
(instead of relying on Automatic 
Parameter Lookup):
modules/nginx/manifests/credentials.pp 
class nginx::credentials ( 
basic_auth = hiera_array('nginx::credentials::basic_auth'), 
){}
hiera_hash
lookup works in the 
same way, only it gathers all matching 
values into a single hash and returns 
that hash. This is often useful for an 
advanced 
create_resources
variable 
import as well as many other uses in 
an advanced Puppet environment.
Perhaps Hiera’s most powerful 
feature is the ability to pull data 
from a variety of back-end storage 
technologies. Hiera back ends are  
too numerous to list, but they include 
JSON, Redis, MongoDB and even HTTP 
to create a URL-driven Puppet value 
API. Let’s take a look at two useful 
back ends: Postgres and hiera-eyaml.
4OSTARTWITHTHEPSQLBACKEND YOU
NEEDTOINSTALLTHEHIERA PSQLGEMON
your Puppet master (or each node if 
you’re using masterless Puppet runs 
with Puppet apply), with a simple 
hiera.yaml file of:
:hierarchy: 
* 'environment/%{env}' 
* default  
:backends:  
* psql  
:psql: 
:connection: 
:dbname: hiera  
:host: localhost  
:user: root  
:password: password
You can do lookups on a local 
Postgres installation with a single 
database called hiera with a single 
table called config with three 
COLUMNS0ATH +EYAND6ALUE
path                   key                               value 
'environment/prod'   'nginx::credentials::basic_auth'   'password'
This is extremely useful if you want 
to expose your Hiera data to custom 
in-house applications outside Puppet, 
or if you want to create a DevOps 
Web console or reports.
Storing credentials in Puppet 
modules is a bad idea. If you store 
credentials in Puppet and your 
manifests on an external code 
repository, you’re not only unable to 
share those manifests with developers 
with less-secure access, but you’re 
obviously exposing vital security 
data outside the organization, and 
possibly in violation of various types 
VB.NET PDF Form Data Read library: extract form data from PDF in
RasterEdge .NET PDF SDK is such one provide various of form field edit functions. Demo Code to Retrieve All Form Fields from a PDF File in VB.NET.
best website to convert pdf to word; converting pdf to html
C# PDF Form Data Read Library: extract form data from PDF in C#.
A best PDF document SDK library enable users abilities to read and extract PDF form data in Visual C#.NET WinForm and ASP.NET WebForm applications.
how to convert pdf to html; convert pdf to web page online
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
63
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
63
of compliance. So how do you encrypt 
sensitive data in Puppet while keeping 
your manifests relevant and sharable? 
The answer is with hiera-eyaml.
Tom Poulton created hiera-eyaml 
to allow engineers to do just that: 
encrypt only the sensitive string of 
data inside the actual file rather than 
encrypting the entire file, which also 
can be done with hiera-gpg (a very 
useful encryption gem but not covered 
in this article).
To get started, install the hiera-eyaml 
gem, and generate a keypair on the 
Puppet master:
$ eyaml createkeys
Then move the keys to a secure 
location, like /etc/puppet/secure/keys. 
Your hiera.yaml configuration should 
look something like this:
hiera.yaml: 
--- 
:backends: 
- eyaml 
- yaml 
:yaml: 
:datadir: /etc/puppet/hieradata 
:eyaml: 
:datadir: /etc/puppet/hieradata 
:extension: 'yaml'          # <- so all files can be named .yaml 
:pkcs7_private_key: /path/to/private_key.pkcs7.pem 
:pkcs7_public_key: /path/to/public_key.pkcs7.pem 
:hierarchy: 
- "node/%{::fqdn}" 
- "environment/%{::env}/main" 
- "environment/%{::env}/%{calling_module}" 
* defaults
To encrypt values, you need only the 
public key, so distribute it to anyone 
who needs to create encrypted values:
$ eyaml encrypt -s 'password'
This will generate an encrypted 
block that you can add as the value in 
any yaml file:
main.yaml: 
nginx::credentials::user: slackey       #cleartext example value 
nginx::credentials::basic_auth : >      #encrypted example value 
ENC[PKCS7,Y22exl+OvjDe+drmik2XEeD3VQtl1uZJXFFF2Nn 
/HjZFXwcXRtTlzewJLc+/gox2IfByQRhsI/AgogRfYQKocZg 
IZGeunzwhqfmEtGiqpvJJQ5wVRdzJVpTnANBA5qxeA==]
%DITINGENCRYPTEDVALUESINPLACE
is one of the coolest features of the 
hiera-eyaml back end. 
eyaml edit
opens a copy of the eyaml file in your 
editor of choice and automatically 
decrypts all of the values in the file. 
Here you can modify the values just 
as though they were plain text. When 
you exit the editor by saving the file, 
it automatically encrypts all of the 
modified values and saves the new 
file in place. You can see that the 
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File C# Protect: Add Password to PDF; C# Form: extract value from fields; C# Annotate: PDF Markup & Drawing.
how to convert pdf into html code; embed pdf into website
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
C# PDF - Convert PDF to JPEG in C#.NET. C#.NET PDF to JPEG Converting & Conversion Control. Convert PDF to JPEG Using C#.NET. Add necessary references:
convert pdf to html format; best pdf to html converter online
64
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
FEATURE  Using Hiera with Puppet
unencrypted plain text is marked 
to allow the eyaml tool to identify 
each encrypted block, along with the 
encryption method that originally 
was used. This is used to make sure 
that the block is encrypted again only 
if the clear text value has changed 
and is encrypted using the original 
encryption mechanism:
nginx::credentials::user: user1 
nginx::credentials::basic_auth : DEC(1)::PKCS7[very secret password]!
Blocks and strings of encrypted text 
can get rather onerous once you have 
more than a hundred entries or so. 
Because these yaml files are meant to 
be modified by humans directly, you 
want them to be easy to navigate. In 
my experience, it makes sense to keep 
your encrypted values in a separate 
file, such as a secure.yaml, with a 
hierarchy path of:
:hierarchy: 
- "node/%{::fqdn}" 
- "environment/%{::env}/secure" 
- "environment/%{::env}/main" 
- "environment/%{::env}/%{calling_module}"
This isn’t necessary, as each value 
is encrypted individually and can be 
distributed safely to other teams. It 
may work well for your environment, 
however, because you can store the 
encrypted files in a separate repository, 
perhaps in a different Git repository. 
Only the private keys need to be 
protected on the Puppet master. I 
also recommend having separate 
keys for each environment, as this 
can give more granular control over 
who can decrypt different datafiles in 
Hiera, as well as even greater security 
separation. One way to do this is to 
name the keys with the possible values 
for the @env fact, and include that in 
the path of the hierarchy. You’ll need 
to encrypt values with the correct key, 
and this naming convention makes it 
easy to tell which one is correct:
:pkcs7_private_key: /path/to/private_key.pkcs7.pem-%{::env} 
:pkcs7_public_key: /path/to/public_key.pkcs7.pem-%{::env}
When using Hiera values within 
Puppet templates, either encrypted or 
not, you must be careful to pull them 
into the class that contains the templates 
instead of calling the values from 
within the template across classes—for 
example, in the template mytest.erb in a 
module called mymodule:
mytest.erb: 
... 
username: user1 
passwd: <%= scope.lookupvar('nginx::credentials::basic_auth') %>  
´#don't do this 
...
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
VB.NET PDF - Convert PDF to MS Office Word in VB.NET. VB.NET Tutorial for How to Convert PDF to Word (.docx) Document in VB.NET. Best
convert pdf to html link; convert pdf form to web form
VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
VB.NET PDF - Convert PDF to TIFF Using VB in VB.NET. Free VB.NET Guide to Render and Convert PDF Document to TIFF in Visual Basic Class.
how to convert pdf file to html; convert pdf link to html
C# PDF Convert to SVG SDK: Convert PDF to SVG files in C#.net, ASP
PDFDocument pdf = new PDFDocument(@"C:\input.pdf"); pdf.ConvertToVectorImages( ContextType.SVG, @"C:\demoOutput Description: Convert to html/svg files and
converting pdf to html code; change pdf to html
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
C#.NET PDF SDK - Convert PDF to TIFF in C#.NET. Online C# Tutorial for How to Convert PDF File to Tiff Image File with .NET XDoc.PDF Control in C#.NET Class.
embed pdf into web page; convert pdf table to html
66
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
Puppet may not have loaded a value into  
nginx::credentials::basic_auth
yet because of the order of 
operations. Also, if you are using the 
%calling_module
Hiera variable, the 
calling module in this case would be 
mymodule, and not nginx, so it would 
not find the value in the nginx.yaml 
file, as one might expect.
To avoid these and other issues, 
it’s best to import the values into the 
mymodule class and assign local values:
mymodule.pp: 
class mymodule { 
include nginx::credentials 
$basic_auth = "${nginx::credentials::basic_auth}" 
file { '/etc/credentials/boto_cloudwatch.cfg': 
content =>  template ("mymodule/mytest.erb"), 
}
And then reference the local value 
from the template:
mytest.erb: 
... 
username: user1 
passwd: <%= @basic_auth %>
You’re now ready to start introducing 
encrypted Hiera values gradually into 
your Puppet environment. Maybe after 
you separate data from your Puppet 
code, you can contribute some of your 
modules to the PuppetForge for others 
to use!
Q
Scott Lackey is a 17-year engineering veteran and Sr. DevOps 
Engineer for Salesforce.com. He’s passionate about helping 
companies migrate to the cloud and mentoring prospective 
DevOps engineers. He lives in Los Angeles with his dachshund 
Zelda. Reach him at sudosudash@gmail.com.
Resources
Docs—Hiera 1 Overview: https://docs.puppetlabs.com/hiera/1
“First Look: Installing and Using Hiera”:  
http://puppetlabs.com/blog/first-look-installing-and-using-hiera
TomPoulton/hiera-eyaml: https://github.com/TomPoulton/hiera-eyaml
dalen/hiera-psql: https://github.com/dalen/hiera-psql
“Encrypting sensitive data in Puppet”: http://www.theguardian.com/info/developer-blog/ 
2014/feb/14/encrypting-sensitive-data-in-puppet
Send comments or feedback via  
http://www.linuxjournal.com/contact  
or to ljeditor@linuxjournal.com.
FEATURE  Using Hiera with Puppet
68
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
FEATURE  Initializing and Managing Services in Linux: Past, Present and Future
INITIALIZING
AND MANAGING
SERVICES
IN LINUX:
PAST,
PRESENT
AND
FUTURE
systemd is the new init system  
used by many of the top Linux distributions,  
but do you know the history behind it  
and how we got here?  
Learn about the history of init systems  
in Linux and their UNIX legacy.  
Gain a better perspective about how Linux  
manages services and other support processes.
Jonas Gorauskas
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
69
WWW.LINUXJOURNAL.COM  /  MARCH 2015  /  
69
O
ne of the most crucial pieces 
of any UNIX-like operating 
system is the init dæmon 
process. In Linux, this process is 
started by the kernel, and it’s the first 
userspace process to spawn and the 
last one to die during shutdown.
During the history of UNIX and 
Linux, many init systems have gained 
popularity and then faded away. In 
this article, I focus on the history 
of the init system as it relates to 
Linux, and I talk about the role of 
init in a modern Linux system. I also 
relate some of the history of the 
3YSTEM6)NIT 3YS6 SCHEME WHICH
was the de facto standard for many 
Linux distributions for a long time. 
Then I cover a couple more modern 
approaches to system initialization, 
such as Upstart and systemd. Finally, 
I pay some attention to how things 
work in systemd, as this seems to be 
the popular choice at the moment for 
several of the largest distributions.
The Role of Init
Init is short for initializer, and it’s 
both a startup manager and a session 
manager for Linux and other UNIXes. 
It’s a startup manager, because it 
plays a crucial role in the startup of 
Linux. It’s the process that creates or 
initializes userspace and, ultimately, 
all userspace processes. It also may 
be considered a session manager, 
because it takes care of many aspects 
of userspace and its processes once 
the system is up and running.
The call to start this process is, in 
fact, hard-coded in the Linux kernel. 
Download the latest kernel sources 
and look for a function called  
kernel_init in the file init/main.c. 
Among the files that the Linux kernel 
will try to execute is /sbin/init. If Linux 
cannot find one of these processes, it 
throws a kernel panic and halts.
The kernel gives the init process an 
ID of 1 or PID 1. All other userspace 
processes are forked from init, and 
therefore, PID 1 claims ancestral rights 
to all other userspace processes. PID 1  
also automatically will become the 
direct parent process of any userspace 
process that is orphaned.
A Little Bit of History
Now that I have set the stage for the 
article and given you a very basic 
understanding of what init is and 
does, I’d like to digress into a little bit 
of UNIX history.
There has been a lot of diversity in 
the initialization schemes for UNIX-
like operating systems over time. Two 
of the most important init schemes 
that had a historical impact on how 
different Linux distributions do things 
ARETHERCSCHEMEUSEDINTHE   "3$
70
/  MARCH 2015  /  WWW.LINUXJOURNAL.COM
FEATURE  Initializing and Managing Services in Linux: Past, Present and Future
ANDTHE3YS6SCHEMEUSEDIN3UN/3
and Solaris.
4HE   "3$INITSYSTEMISPRETTY
simple and monolithic. When booting, 
the kernel runs /sbin/init, which would 
spawn a shell to run the /etc/rc script. 
The /etc/rc script contained commands 
to check the integrity of hard 
drives and mount them, start other 
processes, and start the networking 
subsystem. This scheme was contained 
completely within a few scripts: 
namely /etc/rc, /etc/rc.local and  
/etc/netstart. This scheme also had 
no specific shutdown procedure. Init 
WOULDRECEIVEA3)'4%2-SIGNALAND
SENDA3)'(50ANDORA3)'4%2-TO
its children, and after all processes 
exited, it would drop to single-user 
mode and shut down.
Today, the systems that have 
inherited the rc initialization scheme 
are Free-BSD, Net-BSD and the 
Slackware Linux distribution. These 
modern systems have improved 
QUITE A BIT ON THEORIGINAL L   "3$
scheme and are much more modular 
than the original.
Most other Linux distributions 
have, historically, been adepts of 
THE3YS6SCHEME WHICHORIGINALLY
was implemented in AT&T UNIX and 
derivative systems like Solaris.
System V Init
A Linux distribution implementing 
A3YS6SCHEMECANBEINONEOF
many distinct states in which a 
predetermined number of processes 
may be running. These states are 
called runlevels and to get to a certain 
runlevel means that the system is in a 
certain operational stage.
The meaning for each runlevel may 
vary based on your distribution of 
Linux. For example, there are a few 
distributions (such as Ubuntu) that 
use runlevel 2 to mean multi-user 
graphical mode with networking 
enabled. Others (like Fedora) use 
runlevel 5 to mean the same thing.
)NA3YS6,INUXMACHINE THEKERNEL
runs /sbin/init as usual, which in turn 
will load parameters and execute 
A Linux distribution implementing a SysV 
scheme can be in one of many distinct 
states in which a predetermined number 
of processes may be running.
Documents you may be interested
Documents you may be interested