Difference between pages "ConsoleOutput MediaWiki Extension" and "Hostname"

(Difference between pages)
 
(Diving deeper)
 
Line 1: Line 1:
The ConsoleOutput MediaWiki extension was created by Daniel Robbins to provide highlighting of user input for interactive terminal session blocks. To use it, surround user input with <tt>&lt;console&gt;</tt> opening and closing tags, and put a <tt>##i##</tt> input code immediately before user input on each line. This will cause all text from the <tt>##i##</tt> point to the end of the line to be in a darker color. The rest of the text will be in a lighter grey, allowing it to be distinguished more easily from user input. Here are other sequences that can be used:
+
w.i.p
 
+
==Introduction==
* <tt>##b##</tt> - highlight the rest of the line in bold.
+
A hostname is a unique name created to identify a machine on a network. In computer networking, a hostname is a label that is assigned to a device connected to a computer network and that is used to identify the device in various forms of electronic communication such as the World Wide Web, e-mail or Usenet. Hostnames may be simple names consisting of a single word or phrase, or they may be structured.
* <tt>##b## text here ##!b##</tt> - highlight the text between both markers in bold.
+
==Configuration==
* <tt>##i## text here ##!i##</tt> - highlight the text between both markers in a darker color.
+
In Funtoo Linux <code>/etc/conf.d/hostname</code> is the only configuration file for setting a hostname. In OpenRC framework <code>/etc/conf.d/foo</code> is the configuration file for a corresponding Init script <code>/etc/init.d/foo</code>.  With the case of hostname, default value in <code>/etc/conf.d/hostname</code> is set to ''localhost'', means when system boots and OpenRC's <code>/etc/init.d/hostname</code> script started a hostname getting only ''localhost'' name. How it looks?  In your shell promt this will look in following way, an example for root:
 
+
This extension can be further extended to add color support, as desired, and some of the CSS for color support can already be found in the code below.
+
 
+
Here are a few examples of the ConsoleOutput extension. First this is how you might typically display {{c|ls}} output, with a particular directory highlighted:
+
 
+
 
<console>
 
<console>
www@www-smw ~/public_html $ ##i##ls
+
localhost ~ # ##i## Hello :)
COPYING  LocalSettings.php    api.php  ##b##extensions##!b##  index.php  maintenance          redirect.php    skins              thumb_handler.php5
+
CREDITS  README                api.php5  images        index.php5  mw-config            redirect.php5  tests              wiki.phtml
+
FAQ      RELEASE-NOTES-1.19    bin      img_auth.php  languages  opensearch_desc.php  redirect.phtml  thumb.php
+
HISTORY  StartProfiler.sample  cache    img_auth.php5  load.php    opensearch_desc.php5  resources      thumb.php5
+
INSTALL  UPGRADE              docs      includes      load.php5  profileinfo.php      serialized      thumb_handler.php
+
www@www-smw ~/public_html $ ##i##cd extensions/
+
 
</console>
 
</console>
 +
Let's play a bit with a configuration. Open <code>/etc/conf.d/hostname</code> with your favorite editor and set a hostname of your choice.  Below, I will use a real examples  from one of my working test boxes.
 +
<console>
 +
localhost ~ # ##i## nano /etc/conf.d/hostname
 +
</console>
 +
Let's set it to hostname="oleg-stable.host.funtoo.org". Save the file and restart  a hostname service:
 +
<console>
 +
localhost ~ # ##i## service hostname restart
 +
</console>
 +
Now, let's examine our changes, after a restarting a hostname
 +
<console>
 +
oleg-stable ~ # ##i## Hello :)
 +
</console>
 +
== Diving deeper==
 +
Notice, that in above output we seeing a shortened hostname and not a FQDN (Fully Qualified Domain Name). Don't be frustrated. This is  how  default bash promt <code>PS1</code> set. To get nice promts, please, consult http://www.funtoo.org/Prompt_Magic
 +
Another way to test our settings is using a '''hostname''' command. Here we will show only  some of it's features. Let's try to execute '''hostname''' command:
 +
<console>
 +
oleg-stable ~ # ##i## hostname
 +
oleg-stable.host.funtoo.org
 +
</console>
 +
Now we see our fully qualified domain name hostname just how we configured it in <code>/etc/conf.d/hostname</code> in above paragraph. To get a short hostname we need to set '''-s ''' (short) argument to hostname command.
 +
<console>
 +
oleg-stable ~ # ##i## hostname -s
 +
oleg-stable
 +
</console>
 +
Good! Hostname offers more then just displaying a system host name but can also set one. Let's try:
 +
<console>
 +
oleg-stable ~ # ##i## hostname foo.bar.baz
 +
oleg-stable ~ # ##i## hostname
 +
foo.bar.baz
 +
</console>
 +
As you can see, we changed a hostname on-the-fly. This is not recommended way.
 +
{{fancywarning|Please, notice that using '''hostname''' command to configure will work temporary for a current session and will be reverted back to a value set in <code>/etc/conf.d/hostname</code> file with next system restart.}}
  
And here is how you might display a more detailed example of console output, using colors:
+
Now that we got a brief description of a hostname and basic configuration steps, its time to reflect another important case which is directly related to a Funtoo Linux hostname generation, a hosts.
  
{{console|body=
+
==Hosts case==
# ##i##bluetoothctl
+
As per man page <code>hosts</code> stands for static table lookup for hostnames and it's configuration file is <code>/etc/hosts</code>. Here is how it looks
[##g##NEW##!g##] Controller 00:02:72:C9:62:65 antec [default]
+
{{file|name=/etc/hosts|body=
##bl##[bluetooth]##!bl### ##i##power on
+
# Auto-generated hostname. Please do not remove this comment.
Changing power on succeeded
+
127.0.0.1      oleg-stable.host.funtoo.org oleg-stable localhost localhost.localdomain
##bl##[bluetooth]##!bl### ##i##agent on
+
::1            oleg-stable.host.funtoo.org oleg-stable localhost localhost.localdomain
Agent registered
+
##bl##[bluetooth]##!bl### ##i##scan on
+
Discovery started
+
##bl##[bluetooth]##!bl### ##i##devices
+
Device 00:1F:20:3D:1E:75 Logitech K760
+
##bl##[bluetooth]##!bl### ##i##pair 00:1F:20:3D:1E:75
+
Attempting to pair with 00:1F:20:3D:1E:75
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
+
##r##[agent]##!r## Passkey: 454358
+
##r##[agent]##!r## Passkey: ##i##4##!i##54358
+
##r##[agent]##!r## Passkey: ##i##45##!i##4358
+
##r##[agent]##!r## Passkey: ##i##454##!i##358
+
##r##[agent]##!r## Passkey: ##i##4543##!i##58
+
##r##[agent]##!r## Passkey: ##i##45435##!i##8
+
##r##[agent]##!r## Passkey: ##i##454358##!i##
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Paired: yes
+
Pairing successful
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: no
+
##bl##[bluetooth]##!bl### ##i##connect 00:1F:20:3D:1E:75
+
Attempting to connect to 00:1F:20:3D:1E:75
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
+
Connection successful
+
##bl##[bluetooth]##!bl### ##i##quit
+
[##r##DEL##!r##] Controller 00:02:72:C9:62:65 antec [default]
+
#
+
 
}}
 
}}
 
+
As you can see it has entries from our <code>/etc/conf.d/hostname</code>. As you may have guessed, in Funtoo Linux <code>/etc/hosts</code> file entries are auto-generated, when OpenRC hostname service starts. Previously, it is used to edit <code>/etc/hosts</code> manually. In Funtoo Linux there is no such need.
To install, make the following modifications to your skin:
+
 
+
<syntaxhighlight lang="css">
+
--- mediawiki-1.19.1/skins/vector/screen.css    2012-06-13 18:22:39.000000000 +0000
+
+++ public_html/skins/vector/screen.css 2012-08-27 04:34:47.507912892 +0000
+
@@ -683,10 +683,47 @@
+
        list-style-image: url(images/bullet-icon.png);
+
}
+
+
-pre {
+
-      line-height: 1.3em;
+
+/* ConsoleOutput.php start */
+
+
+
+.shell, pre, code, tt, div.mw-geshi {
+
+        font-size: 12px;
+
+        font-family: Consolas, 'andale mono','lucida console', monospace;
+
+}
+
+
+
+.shell, pre, div.mw-geshi {
+
+        background-color: #F8F8FF;
+
+        line-height: 15px;
+
+        padding: 10px;
+
+        border: none;
+
+        border-top: 2px solid #C6C9E0;
+
+        border-bottom: 2px solid #C6C9E0;
+
+        margin: 0;
+
+        overflow-x: auto;
+
+        overflow-y: hidden;
+
+}
+
+
+
+.code {
+
+        color: #666;
+
+}
+
+
+
+.code_input {
+
+        color: #000;
+
}
+
+
+.code_red {
+
+        color: #f00;
+
+}
+
+
+
+.code_blue {
+
+        color: #00f;
+
+}
+
+
+
+.shell_green {
+
+        color: #080;
+
+}
+
+
+
+/* ConsoleOutput.php end */
+
+
+
/* Site Notice (includes notices from CentralNotice extension) */
+
#siteNotice {
+
        font-size: 0.8em;
+
</syntaxhighlight>
+
 
+
Then install the following code in your <tt>extensions</tt> directory and include it with a <tt>require_once( "$IP/extensions/ConsoleOutput.php" );</tt> in <tt>LocalSettings.php</tt>:
+
 
+
<syntaxhighlight lang="php">
+
<?php
+
$wgExtensionCredits['validextensionclass'][] = array(
+
    'name' => 'ConsoleOutput',
+
    'author' => 'Daniel Robbins',
+
    'url' => 'https://github.com/danielrobbins/mediawiki-consoleoutput',
+
    'description' => 'This extension allows you to display colorized console output in mediawiki'
+
);
+
 
+
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
+
        $wgHooks['ParserFirstCallInit'][] = 'consoleOutputSetup';
+
} else {
+
        $wgExtensionFunctions[] = 'consoleOutputSetup';
+
}
+
 
+
function consoleOutputSetup( $data )
+
{
+
    global $wgParser;
+
    $wgParser->setHook('console', 'consoleRender');
+
    return true;
+
}
+
 
+
function consoleRender($input, $args, $parser)
+
{
+
    if (count($args))
+
    {
+
        return "<strong class='error'>" .
+
              "ConsoleOutput: arguments not supported" .
+
              "</strong>";
+
    }
+
 
+
    # Display < and > as literals, so escape them:
+
 
+
    $input = preg_replace('/>/','&gt;', $input);
+
    $input = preg_replace('/</','&lt;', $input);
+
 
+
    # http://www.perlmonks.org/?node_id=518444
+
    # See "Matching a pattern that doesn't include another pattern:
+
 
+
    $input = preg_replace('/##i##((?:(?!##!i##).)*)##!i##/','<span class="code_input">$1</span>', $input);
+
    $input = preg_replace('/##i##(.*)/','<span class="code_input">$1</span>', $input);
+
    $input = preg_replace('/##b##((?:(?!##!b##).)*)##!b##/','<b>$1</b>', $input);
+
    $input = preg_replace('/##b##(.*)/','<b>$1</b>', $input);
+
    return "<pre class=\"code\">" . $input . "&lt;/pre>";
+
}
+
?>
+
</syntaxhighlight>
+
 
+
[[Category:MediaWiki Hacks]]
+

Revision as of 06:37, February 23, 2015

w.i.p

Introduction

A hostname is a unique name created to identify a machine on a network. In computer networking, a hostname is a label that is assigned to a device connected to a computer network and that is used to identify the device in various forms of electronic communication such as the World Wide Web, e-mail or Usenet. Hostnames may be simple names consisting of a single word or phrase, or they may be structured.

Configuration

In Funtoo Linux /etc/conf.d/hostname is the only configuration file for setting a hostname. In OpenRC framework /etc/conf.d/foo is the configuration file for a corresponding Init script /etc/init.d/foo. With the case of hostname, default value in /etc/conf.d/hostname is set to localhost, means when system boots and OpenRC's /etc/init.d/hostname script started a hostname getting only localhost name. How it looks? In your shell promt this will look in following way, an example for root:

localhost ~ #  Hello :)

Let's play a bit with a configuration. Open /etc/conf.d/hostname with your favorite editor and set a hostname of your choice. Below, I will use a real examples from one of my working test boxes.

localhost ~ #  nano /etc/conf.d/hostname

Let's set it to hostname="oleg-stable.host.funtoo.org". Save the file and restart a hostname service:

localhost ~ #  service hostname restart

Now, let's examine our changes, after a restarting a hostname

oleg-stable ~ #  Hello :)

Diving deeper

Notice, that in above output we seeing a shortened hostname and not a FQDN (Fully Qualified Domain Name). Don't be frustrated. This is how default bash promt PS1 set. To get nice promts, please, consult http://www.funtoo.org/Prompt_Magic Another way to test our settings is using a hostname command. Here we will show only some of it's features. Let's try to execute hostname command:

oleg-stable ~ #  hostname
oleg-stable.host.funtoo.org

Now we see our fully qualified domain name hostname just how we configured it in /etc/conf.d/hostname in above paragraph. To get a short hostname we need to set -s (short) argument to hostname command.

oleg-stable ~ #  hostname -s
oleg-stable

Good! Hostname offers more then just displaying a system host name but can also set one. Let's try:

oleg-stable ~ #  hostname foo.bar.baz
oleg-stable ~ #  hostname 
foo.bar.baz

As you can see, we changed a hostname on-the-fly. This is not recommended way.

Warning

Please, notice that using hostname command to configure will work temporary for a current session and will be reverted back to a value set in /etc/conf.d/hostname file with next system restart.

Now that we got a brief description of a hostname and basic configuration steps, its time to reflect another important case which is directly related to a Funtoo Linux hostname generation, a hosts.

Hosts case

As per man page hosts stands for static table lookup for hostnames and it's configuration file is /etc/hosts. Here is how it looks

/etc/hosts
# Auto-generated hostname. Please do not remove this comment.
127.0.0.1       oleg-stable.host.funtoo.org oleg-stable localhost localhost.localdomain
::1             oleg-stable.host.funtoo.org oleg-stable localhost localhost.localdomain

As you can see it has entries from our /etc/conf.d/hostname. As you may have guessed, in Funtoo Linux /etc/hosts file entries are auto-generated, when OpenRC hostname service starts. Previously, it is used to edit /etc/hosts manually. In Funtoo Linux there is no such need.