text:
Jul 5, 2011 at 9:49 PM
Thread Starter
- Joined
- Dec 28, 2010
- Messages
- 854
- Reaction score
- 56
- Joined
- Dec 28, 2010
- Posts
- 854
- Likes
- 56
Westone ES5
Disclaimer: This review is just a reflection of my opinions and experience.
Disclaimer: This review is just a reflection of my opinions and experience.
Sensitivity: 120 dB SPL/mW
Frequency response: 8 Hz - 20 kHz
Impedance: 20 ohm
Speaker Technology: Five balanced armature drivers with a passive three-way crossover
Features : Replaceable cable, one year parts and labor warranty on internal components, 25 dB average noise attenuation, user manual and deluxe carrying case
Equipment Used In This Review:
Hifiman HM-801
iPod Touch 3G
iPhone 4
Sansa Fuze
Macbook Pro
Before I had the pleasure of listening to the Westone ES5's I went through an obstacle. My first pair of quality IEM's back in 2006 was the Etymotic ER4P. Coming from a bunch of cheap earbuds, canal phones and clip on sports headphones, the ER4P really surprised me at how much I was missing. The ER4P's are one of the top monitors in the universal IEM arena when it comes to detail and clarity. The soundstage isn't that great, more on the slightly below average level, but the instrument separation is very sharp and distinct. I was very happy with the ER4P's until I lost them while coming home from work. Whoever found them, I hope you can experience their wonderful detail and clarity. I couldn't go back to my previous earbuds, earphones, etc... So I decided to look for a better universal IEM and came across the Westone 3.
The Westone 3's were like the polar opposite of the ER4P in terms of sound signature and it took me a while to get accustomed to the 3's. My first reaction to the sound of the 3's was " Oh gawd, the bass!!! ". Though the bass was no doubt tight and detailed it was well beyond it's wanted presence. In some songs the added bass was welcoming, but in other songs it ruined the whole balance. Usually speakers that have this much bass output don't have great clarity or detail to their overall sound. The Westone 3's really changed that general thought for me. It's sound is very detailed and clear. The midrange was slightly laid back and sometimes a bit harsh, but it was nicely presented most of the time. The treble was sometimes a bit too hot and really induced listening fatigue quickly. This was on poorly mastered recordings though and never really did this on my reference ones. To me the ER4P's were a bit clearer and detailed, but the Westone 3's had a MUCH larger soundstage and musical characteristic feel to the sound.
I ended up selling my Westone 3's in preparation for purchasing a custom IEM. Now that I think about it, I should have kept my Westone 3's as a back up IEM... I visited a few audiologists in NY and got to listen to Jerry Harvey's custom IEM's ( JH13 Pro, JH11 Pro and JH10 pro ). I actually had my mind set on the JH13 Pro, because the sound was just spectacular on so many levels. It was like the Etymotic ER4P and Westone 3 had a baby and then that baby found steroids. What ultimately lead me to the Westone ES5's was the realization that Westone uses vinyl tips for their custom IEM's leading to superior comfort than an all acrylic shell. I wanted something going that far into my ear to be of a soft material not hard.
Arrival of the Westone ES5's
The Westone ES5 arrived to me via UPS. From the time spent sending my custom molds to Westone and receiving my Westone ES5, it took 2 weeks. The packaging of the Westone ES5 consists of a free T-shirt ( I wear it sometimes ) with Westone's logo and website labeled on it. There is a nice crush proof and water tight pelican case that in which you'll find your ES5's wrapped up nicely along with a microfiber cloth for cleaning the exterior shell of the IEM's. Also, there is wax removal brush, oto-ease bottle for easier insertion of the IEM's, and a desiccant pod which helps remove moisture from inside the IEM's.
First impressions of the Westone ES5's
Unfortunately, I wasn't able to listen to my Westone ES5's as soon as they arrived because I promised a friend that I would go with her to the Museum of Natural History. I thought it wouldn't be appropriate to take my Westone ES5's with me, because my attention wouldn't be on her or anything in the museum. As soon as I got home, I hurried to get everything that needed to be done, done. After reading on the web from many different areas I finally found out how to get the ES5's into my ears. For my first custom IEM it felt awkward. I felt like I was underwater due to the superb noise isolation. Nothing else I've used isolated ambient external noise at this level. They felt nice and snug in my ears too. Within the first 2 minutes of the first song I played I couldn't help but chuckle and smile. The sound was just completely effortless, coherent, balanced, detailed and clear. I then sat there in my nice comfy chair and proceeded to listen to the rest of my musical library with my eyes closed and a big smile on my face.
The sound
The midrange is no doubt the heart of the music and is a deal breaker for many in terms of the overall performance of a speaker. The midrange of the Westone ES5 is just slightly forward, but not ever congested. Male vocals are very natural and not overly chesty, or dry. The midrange has great body, but it does not have any noticeable coloration that I can hear. What amazes me the most about the midrange presentation of the Westone ES5 is how easily it lures you into the music and takes away what little grip you had with reality. It's very coherent and smooth. Great midrange simply produces a better connection to the music. The realism of the midrange creates great mental imagery corresponding to the actual instruments used to my ears. This type of categorizing happens subconsciously and is further an extension of the resolution of the Westone ES5. This helps me connect with the recording and enhances the musical experience. I expect much of the refinement in the midrange is suspect for this effect.
The treble is extraordinarily clean. There is no grain, spit, grit, or veil of any kind here. The treble is very pure in nature, and it has no texture that detracts from transparency. In fact, I would classify the treble as being astonishingly transparent. Like the bass response of the Westone ES5, I sense no interference in the treble with any other parts in the frequency range. The marks in the treble seem to extend with realistic decay in all directions, which is remarkable for an IEM. The decay of treble is one best attributes of the Westone ES5. The resolution on the Westone ES5 help the decay in illustrating sound images accurately from beginning to disappearance. This strength helps in providing realism and building melodies. When a vocalist is harmonizing with other performers or instruments, the resolution of the Westone ES5 takes the music to another level. This effect is demonstrated nicely on Andre Reiu's 'The Flying Dutchman'.
With its texture, extension, and decay, the Westone ES5's bass is something to appreciate from any audio enthusiast. The quality of the bass is stupendous – very well defined, tight, and with great definition, extension and attack. The sub-bass in live recordings are retrieved with immediacy and accuracy on the Westone ES5. The Westone ES5's bass also scales up and gives you the extra distance if present in the source recording. Coming from a single subwoofer as opposed to the dual or quad subwoofers that the immediate competition utilizes, I didn't expect this type of bass presentation. Boy was I wrong... For those on the fence thinking these are bass-light, lay those worries aside. But, they are not going to satisfy a bass-head unless some heavy EQing is applied.
With the Westone ES5, it is easy, not "work", to imagine real performers in real space. It's very tempting to keep closing my eyes when listening to them, because the imaging is so convincing. For anyone who has avoided IEM's because they don't image like headphones, spend some time with the Westone ES5. The stereo imaging on the Westone ES5's really shines with live studio recordings. With higher quality recordings, you can discern details such as when a singer moves his/her head while performing. This can be heard on Alison Krauss & Union Station's 'Live' during several passages. I have more easily noticed other micro details on the Westone ES5 such as singers licking their lips, fingers crossing over strings, or performers taking in a breath. Also, the decay of micro details and transients is nothing short of a strength on the Westone ES5.
In short, the Westone ES5 is capable of producing a lucid yet vividly alive rendering of your best music. The Westone ES5's disappear completely. These monitors provide a plethora of details that come at the listener with great accuracy and speed. The Westone ES5 has the ability to recreate music with realistic soundstaging, imaging and decay. There is a sense of realism in the Westone ES5's imaging, and where clarity and resolution are second to none. The Westone ES5 handles micro detail with the speed and attack necessary to image the effect's appearance, and makes disappear the effect with a natural sense of time. There is also very little to no roll off of the treble or bass. I also detect no smearing of details nor marks anywhere in the imaging. Complex passages become alive with concise pace, rhythm, and timing. The Westone ES5 can provide accurate sound of varying volume levels that occur simultaneously in a recording. I would without a doubt recommend the Westone ES5 to anyone looking for a well balanced high-end custom IEM as I feel they are simply breathtaking. Thanks for reading my review and I hope you found it enjoyable!


text:
WASHINGTON, March 16 (UPI) -- Republicans should learn from his campaign's mistakes to win in the future, failed 2012 GOP presidential nominee Mitt Romney told a gathering of conservatives.
Addressing the Conservative Political Action Conference Friday, Romney said Republicans should learn from their election losses "to make sure that we take back the nation, take back the White House, get the Senate and put in place conservative principles," The Hill reported.
Some Republicans have charged Romney lost the 2012 election to President Obama because he was not conservative enough.
Speaking before Romney, Texas Gov. Rick Perry said lessons could be learned from the country's 30 Republican governors, whom he called "some of our greatest success stories."
Perry was among about a dozen Republican 2012 presidential aspirants.
Romney said conservatives could learn from Republican governors such as Chris Christie of New Jersey and Bob McDonnell of Virginia. Neither of them was invited to the conference in part because of their support for expanding Medicare and a transportation tax, which are opposed by the party's fiscal conservatives.
He added that governors of the "blue and purple states" would have to be included in discussions about the party's future because "those are the states we're going to have to win to get back the Senate and the White House."

subset: commoncrawl


text:
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The use of extension language allows extending the functionality of GNU Radius without having to modify its source code. The two extension languages supported are Rewrite and Scheme. Use of Rewrite is always enabled. Use of Scheme requires Guile version 1.4 or higher.
|10.1 Filters
|Using external filter programs.
|10.2 Rewrite
|The built-in extension language.
|10.3 Guile
|Using Scheme.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The simplest way to extend the functionality of Radius is to use filters. A filter is an external program that communicates with Radius via its standard input and output channels.
|10.1.1 Getting Acquainted with Filters
|10.1.2 Declaring the Filter
|10.1.3 Invoking the Filter from a User Profile
|10.1.4 Adding Reply Attributes
|10.1.5 Accounting Filters
|10.1.6 Invoking the Accounting Filter
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Suppose we wish to implement an authentication method based on the user name and the user's calling station ID. We have a database of user names with valid IDs, and the new method should authenticate a user only if the combination {user_name, id} is found in this database.
We write a filter program that reads its standard input line by line.
Each input line must consist of exactly two words: the user name
and the calling station ID. For each input line, the
program prints
0 if the {user_name, id} is found in the
database and
1 otherwise. Let's suppose for the sake of example
that the database is a plaintext file and the filter is written in
a shell programming language. Then it will look like
#! /bin/sh DB=/var/db/userlist while read NAME CLID do if grep "$1:$2" $DB; then echo "0" else echo "1" fi done
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Here is how this filter is declared in the 'raddb/config' file:
filters { filter check_clid { exec-path "/usr/libexec/myfilter"; error-log "myfilter.log"; auth { input-format "%C{User-Name} %C{Calling-Station-Id}"; wait-reply yes; }; }; };
Let's analyze this declaration line by line:
filters {
This keyword opens the filters declaration block. The block may contain several declarations.
filter check_clid {
This line starts the declaration of this particular filter and names it 'check_clid'.
exec-path "/usr/libexec/myfilter";
This line tells
radiusd where to find the executable image of
this filter.
error-log "myfilter.log";
The diagnostic output from this filter must be redirected to the file 'myfilter.log' in the current logging directory
auth {
This filter will process authentication requests.
input-format "%C{User-Name} %C{Calling-Station-Id}";
Define the input line format for this filter. The %C{} expressions will be replaced by the values of the corresponding attributes from the incoming request (see section Macro Substitution).
wait-reply yes;
radiusd will wait for the reply from this filter to decide whether to
authenticate the user.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
To invoke this filter from the user profile, specify its name prefixed
with '|' in the value of
Exec-Program-Wait attribute,
like this:
DEFAULT Auth-Type = System, Simultaneous-Use = 1 Exec-Program-Wait = "|check_clid"
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Apart from simply deciding whether to authenticate a user, the filter can also modify the reply pairs.
#! /bin/sh DB=/var/db/userlist while read NAME CLID do if grep "$1:$2" $DB; then echo "0 Service-Type = Login, Session-Timeout = 1200" else echo "1 Reply-Message = \"You are not authorized to log in\"" fi done
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Let's suppose we further modify our filter to also handle accounting requests. To discern between the authentication and accounting requests we'll prefix each authentication request with the word 'auth' and each accounting request with the word 'acct'. Furthermore, the input line for accounting requests will contain a timestamp.
Now, our filter program will look as follows:
#! /bin/sh AUTH_DB=/var/db/userlist ACCT_DB=/var/db/acct.db while read CODE NAME CLID DATE do case CODE auth) if grep "$1:$2" $DB; then echo "0 Service-Type = Login, \ Session-Timeout = 1200" else echo "1 Reply-Message = \ \"You are not authorized to log in\"" fi acct) echo "$CODE $NAME $CLID $DATE" >> $ACCT_DB done
Its declaration in the 'raddb/config' will also change:
filter check_clid { exec-path "/usr/libexec/myfilter"; error-log "myfilter.log"; auth { input-format "auth %C{User-Name} %C{Calling-Station-Id}"; wait-reply yes; }; acct { input-format "acct %C{User-Name} %C{Calling-Station-Id} %D"; wait-reply no; }; };
input-format lines are split for readability. Each of them
is actually one line).
wait-reply no in the
acct statement. It
radiusd that it shouldn't wait for the response on
accounting requests from the filter.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
To invoke the accounting filter, specify its name prefixed with a
vertical bar character as a value of
Acct-Ext-Program in our
'raddb/hints' file. For example:
DEFAULT NULL Acct-Ext-Program = "|check_clid:
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Rewrite is the GNU Radius extension language. Its name reflects the fact that it was originally designed to rewrite the broken request packets so they could be processed as usual (see section Rewriting Incoming Requests). Beside this basic use, however, Rewrite functions are used to control various aspects of GNU Radius functionality, such as verifying the activity of user sessions, controlling the amount of information displayed in log messages, etc (see section Interaction with Radius).
|10.2.1 Syntax Overview
|10.2.2 Quick Start
|10.2.3 Interaction with Radius
|10.2.4 Rewriting Incoming Requests
|10.2.5 Login Verification Functions
|10.2.6 Attribute Creation Functions
|10.2.7 Logging Hook Functions
|10.2.8 Full Syntax Description
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The syntax of Rewrite resembles that of C. Rewrite has two basic data types:
integer and string. It does not have global variables; all variables are
automatic. The only exceptions are the A/V pairs from the incoming request,
which are accessible to Rewrite functions via the special notation
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
As an example, let's consider the following Rewrite function:
string foo(integer i) { string rc; if (i % 2) rc = "odd"; else rc = "even"; return "the number is " + rc; }
The function takes an integer argument and returns the string
'the number is odd' or 'the number is even', depending on the
value of
i. This illustrates the fact that in Rewrite the
addition operator is defined on the string type. The result of
such operation is the concatenation of operands.
Another example is a function that adds a prefix to the
integer px_add() { %[User-Name] = "pfx-" + %[User-Name]; return 0; }
This function manipulates the contents of the incoming request; its return value has no special meaning.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A Rewrite function can be invoked in several ways, depending on its purpose. There are three major kinds of Rewrite functions:
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The need for rewriting the incoming requests arises from the fact that
some NASes are very particular about the information they send with
the requests. There are cases when the information they send
is hardly usable or even completely unusable. For example, a
Cisco AS5300 terminal server used as a voice-over IP router packs
a lot of information into its
Acct-Session-Id attribute. Though
the information stored there is otherwise relevant, it makes proper
accounting impossible, since the
Acct-Session-Id attributes
in the start and stop packets of the same session become different, and
thus Radius cannot determine the session start to which the given
session stop request corresponds (see section
In order to cope with such NASes, GNU Radius is able to invoke a Rewrite function upon arrival of the packet and before processing it further. This function can transform the packet so that it obtains the form prescribed by RFCs and its further processing becomes possible.
For example, in the case of the AS5300 router, a corresponding Rewrite
function parses the
Acct-Session-Id attribute; breaks it
down into fields; stores them into proper attributes, creating
them if necessary; and finally replaces
Acct-Session-Id with
its real value, which is the same for the start and stop records
corresponding to a single session. Thus all the information that
came with the packet is preserved, but the packet itself is made
usable for proper accounting.
A special attribute,
Rewrite-Function, is used to trigger
invocation of a Rewrite function. Its value is a name of the
function to be invoked.
When used in a 'naslist' profile, the attribute causes the function
to be invoked when the incoming request matches the huntgroup
(see section Huntgroups). For example, to have a function
invoked for each packet from the NAS
10.10.10.11, the
following huntgroup rule may be used:
DEFAULT NAS-IP-Address = 18.104.22.168 Rewrite-Function = "fixup"
Rewrite-Function attribute may also be used in a 'hints'
rule. In this case, it will invoke the function if the request matches
the rule (see section Hints). For example, this 'hints' rule will
cause the function to be invoked for each request containing the user name
starting with 'P':
DEFAULT Prefix = "P" Rewrite-Function = "fixup"
Note that in both cases the attribute can be used either in LHS or in RHS pairs of a rule.
The packet rewrite function must be declared as having no arguments and returning an integer value:
integer fixup() { }
The actual return value from such a function is ignored, the integer return type is just a matter of convention.
The following subsection present some examples of packet rewrite functions.
|10.2.4.1 Examples of Various Rewrite Functions
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The examples found in this chapter are working functions that can be used with various existing NAS types. They are taken from the 'rewrite' file contained in distribution of GNU Radius.
Some MAX Ascend terminal servers pack additional information
into the
NAS-Port-Id attribute. The port number is constructed as
XYYZZ, where X = 1 for digital, X = 2 for analog,
YY is the line number
(1 for first PRI/T1/E1, 2 for second, and so on), and ZZ is the
channel number
(on the PRI or channelized T1/E1).
The following rewrite functions are intended to compute the integer
port number in the range (1 .. portcnt), where portcnt
represents the real number of physical ports available on the NAS.
Such a port number can be used, for example, to create a dynamic pool
of IP addresses (see section
/* * decode MAX port number * input: P -- The value of NAS-Port-Id attribute * portcnt -- number of physical ports on the NAS */ integer max_decode_port(integer P, integer portcnt) { if (P > 9999) { integer s, l, c; s = P / 10000; l = (P - (10000 * s))/100; c = P - ((10000 * s) + (100 * l)); return (c-1) + (l-1) * portcnt; } return P; } /* * Interface function for MAX terminal server with 23 ports. * Note that it saves the received NAS-Port-Id attribute in * the Orig-NAS-Port-Id attribute. The latter must be * defined somewhere in the dictionary */ integer max_fixup() { %[Orig-NAS-Port-Id] = %[NAS-Port-Id]; # Preserve original data %[NAS-Port-Id] = max_decode_port(%[NAS-Port-Id], 23); return 0; }
Cisco VOIP IOS encodes a lot of other information into its
Acct-Session-Id. The pieces of information are separated by
'/' characters. The part of
Acct-Session-Id up to the first
'/' character is the actual session ID.
On the other hand, its accounting packets lack
though they may contain the vendor-specific pair with code 2
(vendor PEC 9), which is a string in the form 'ISDN 9:D:999'
('9' represents any decimal digit). The number after the last
':' character can be used as a port number.
The following code parses
Acct-Session-Id attribute and stores
the information it contains in various other attributes, generates a
Acct-Session-Id, and attempts to generate a
NAS-Port-Id attribute.
/* * The port rewriting function for Cisco AS5300 used for * VoIP. This function is used to generate NAS-Port-Id pair * on the basis of vendor-specific pair 2. If the latter is * in the form "ISDN 9:D:999" (where each 9 represents a * decimal digit), then the function returns the number * after the last colon. This is used as a port number. */ integer cisco_pid(string A) { if (A =~ ".*\([0-9][0-9]*\): [A-Z0-9][A-Z0-9]*:\([0-9][0-9]*\)") { return (integer)\2; } return -1; } /* * This function parses the packed session id. * The actual sid is the number before the first slash * character. Other possibly relevant fields are also * parsed out and saved in the Voip-* A/V pairs. The latter * should be defined somewhere in the dictionary. * Note that the regular expression in this example * spans several lines for readability. It should be on one * line in real file. */ string cisco_sid(string S) { if (S =~ "\(.[^/]*\)/[^/]*/[^/]*/\([^/]*\)/\([^/]*\)/ \([^/]*\)/\([^/]*\)/\([^/]*\)/\([^/]*\) /\([^/]*\).*") { %[Voip-Connection-ID] = \2; %[Voip-Call-Leg-Type] = \3; %[Voip-Connection-Type] = \4; %[Voip-Connect-Time] = \5; %[Voip-Disconnect-Time] = \6; %[Voip-Disconnect-Cause] = \7; %[Voip-Remote-IP] = \8; return \1; } return S; } /* * Normalize cisco AS5300 packets */ integer cisco_fixup() { integer pid; if ((pid = cisco_pid(%[Cisco-PRI-Circuit])) != -1) { if (*%[NAS-Port-Id]) %[Orig-NAS-Port-Id] = %[NAS-Port-Id]; %[NAS-Port-Id] = pid; } if (*%[Acct-Session-Id]) { %[Orig-Acct-Session-Id] = %[Acct-Session-Id]; %[Acct-Session-Id] = cisco_sid(%[Acct-Session-Id]); } return 0; }
Users coming from Windows NT machines often authenticate themselves as
'NT_DOMAIN\username'. The following function selects the
user-name part and stores it in the
User-Name attribute:
integer login_nt(string uname) { integer i; if ((i = index(uname, '\\')) != -1) return substr(uname, i+1, -1); return uname; } integer nt_rewrite() { %[Orig-User-Name] = %[User-Name]; %[User-Name] = login_nt(%[User-Name]); return 0; }
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A login verification function is invoked to process the output from the
NAS. This process is described in Multiple Login Checking.
The function to be invoked for given NAS is defined by
function flag in the 'raddb/nastypes' or 'raddb/naslist'
file (see section NAS Types — 'raddb/nastypes'). It must be defined as follows:
Its arguments are:
Input string. If the query method is
finger, this is the string
of output received from the NAS with trailing newline stripped off. If
the query method is
snmp, it is the received variable value
converted to its string representation.
User name.
Port ID of the session.
Session ID.
The function should return non-0 if its arguments match the user's session, and 0 otherwise.
|10.2.5.1 Examples of Login Verification Functions
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
As an example, let's consider the function for analyzing a
line of output from a standard UNIX
service. In each line
finger output the first field contains the user name; the
third field, the
The function must return 1 if the three fields match the input
user name and port and session IDs:
integer check_unix(string str, string name, integer pid, string sid) { return field(str, 1) == name && field(str, 3) == pid && field(str, 7) == sid; }
The next example is a function to analyze a line of output from an SNMP query returning a user name. This function must return 1 if the entire input line matches the user name:
integer check_username(string str, string name, integer pid, string sid) { return str == name; }
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
These are the functions used to create Radius reply attributes. An attribute creation function can take any number of arguments. The type of its return is determined by the type of Radius attribute the value will be assigned to. To invoke the function, write its name in the A/V pair of the RHS in the 'raddb/users' file, e.g.:
DEFAULT Auth-Type = SQL Service-Type = Framed-User, Framed-IP-Address = "=get_ip_addr(10.10.10.1)"
The function
get_ip_addr will be invoked after successful
authentication and it will be passed the IP
10.10.10.1 as its
argument. An example of a useful function that can be invoked this
way is
integer get_ip_address(integer base) { return base + %[NAS-Port-Id] - %[NAS-Port-Id]/16; }
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A logging hook functions should be declared as follows:
Type of the request. It can be converted to string using
request_code_string function (see section Rewrite Built-in Functions).
NAS identifier from 'raddb/naslist', or its host name if not declared there
Request identifier.
Notice that the hook function shall not produce any side effects, in particular it shall not modify the incoming request in any way.
Following is an example prefix hook function that formats the incoming request data:
string compat_log_prefix(integer reqtype, string nas, integer id) { string result; return "(" + request_code_string(reqtype) + " " + nas + " " + (string)id + " " + %[User-Name] + ")"; }
Here is a sample log produced by
radiusd before and after
enabling this function:
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
|10.2.8.1 Rewrite Data Types
|10.2.8.2 Rewrite Symbols
|10.2.8.3 Rewrite Identifiers
|10.2.8.4 Rewrite Declarations
|10.2.8.5 Rewrite Statements
|10.2.8.6 Regular Expressions
|10.2.8.7 Rewrite Built-in Functions
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
There are only two data types:
integer and
the two being coercible to each other in the sense that a string
can be coerced to an integer if it contains a valid ASCII representation
of a decimal, octal, or hex number, and an integer can always be coerced
to a string, the result of such coercion being the ASCII string
that is the
decimal representation of the number.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A symbol is a lexical token. The following symbols are recognized:
These are '+', '-', '*', '/' representing the basic arithmetical operations, and '%' meaning remainder.
These are: '==', '!=', '<', '<=', '>', '>=' with the same meaning they have in C. Special operators are provided for regular-expression matching. The binary operator '=~' returns true if its left-hand-side operand matches the regular expression on its right-hand side (see section Regular Expressions). '!~' returns true if its left-hand-side operand does not match the regexp on its right-hand side. The right-hand-side operand of '!~' or '=~' must be a literal string, i.e., the regular expression must be known at compile time.
The unary operators are '-' and '+' for unary plus and minus, '!' for boolean negation, and '*' for testing for the existence of an attribute.
These are '&&' and '||'.
These are used to change the precedence of operators, to introduce type casts (type coercions), to declare functions, and to pass actual arguments to functions.
These are used to delimit blocks of code.
Numbers follow the usual C convention for integers. A number consisting of a sequence of digits is taken to be octal if it begins with '0' (digit zero), and decimal otherwise. If the sequence of digits is preceded by '0x' or '0X', it is taken to be a hexadecimal integer.
IP numbers are represented by a standard numbers-and-dots notation. IP numbers do not constitute a separate data type, rather they are in all respects similar to initeger numbers.
These follow the usual C convention for characters, i.e., they consist either of an ASCII character itself or of its value, enclosed in a pair of singlequotes. The character value begins with '\' (backslash) and consists either of three octal or of two hexadecimal digits. A character does not form a special data type; it is represented internally by an integer.
These follow slightly modified C conventions for strings. A string is a sequence of characters surrounded by double quotes, as in '"..."'. In a string, the double quote character '"' must be preceeded by a backslash '\'. A '\' and an immediately following newline are ignored. Following escape sequences have special meaning:
Audible bell character (ASCII 7)
Backspace (ASCII 8)
Escape character (ASCII 27)
Form feed (ASCII 12)
Newline (ASCII 10)
Carriage return (ASCII 13)
Horizontal tab (ASCII 9)
('o' represents an octal digit) A character whose ASCII value is represented by the octal number 'ooo'.
('H' represents a hex digit) A character whose ASCII value is represented by the hex number 'HH'.
Two characters '\('.
Two characters '\)'.
If the character following the backslash is not one of those specified, the backslash is ignored.
The incoming request is passed implicitly to functions invoked via the
Rewrite-Function attribute. It is kept as an associative array,
whose entries can be accessed using the following syntax:
'%[' attribute-name ']' '%[' attribute-name ']' '(' n ')'
The first form returns the value of the attribute attribute-name. Here attribute-name should be a valid Radius dictionary name (see section Dictionary of Attributes — 'raddb/dictionary').
The second form returns the value of the nth attribute of type attribute-name. The index n is counted from zero, so
is equivalent to
Identifiers represent functions and variables. These are described in the next sub-subsection.
A sequence of characters in the form
refers to the contents of parenthesized group number number obtained as a result of the last executed '=~' command. The regexp group reference has always string data type. For example:
string basename(string arg) { if (arg =~ ".*/\(.*\)\..*") return \1; else return arg; }
This function strips from arg all leading components up to the
last slash character, and all trailing components after the last dot
character. It returns arg unaltered if it does not contain
slashes and dots. It is roughly analogous to the system
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A valid identifier is a string of characters meeting the following requirements:
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A Rewrite function is declared as follows:
type function-name (parameter-list)
where type specifies the return type of the function, function-name declares the symbolic name of the function, and parameter-list declares the formal parameters to the function. It is a comma-separated list of declarations in the form
type parm-name
type being the parameter type, and parm-name being its symbolic name. Both function-name and parm-name should be valid identifiers.
There are no global variables in Rewrite. All variables are local. The local variables are declared right after the opening curly brace ('{') and before any executable statements. The declaration syntax is
type ident_list ;
Here ident_list is either a valid Rewrite identifier or a comma-separated list of such identifiers.
Note that, unlike in C, no assignments are allowed in variable declarations.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The Rewrite statements are: expressions, assignments, conditional statements, and return statements. A statement is terminated by a semicolon.
An expression is one of the following:
The type coercion is like a type cast in C. Its syntax is
'(' type ')' ident
The result of type coercion is as follows:
Variable type
Resulting conversion
No conversion. This results in the same integer value.
If the string value of the variable is a valid ASCII representation of the integer number (either decimal, octal, or hex), it is converted to the integer; otherwise the result of the conversion is undefined.
The ASCII representation (in decimal) of the integer number.
No conversion. This results in the same string value.
An assignment is
ident = expression ;
The variable ident is assigned the value of expression.
These take the form
ident ( arg-list )
where ident is the identifier representing the function, and arg-list is a comma-separated list of expressions supplying actual arguments to the function. The number of the expressions must correspond exactly to the number of formal parameters in the function definition. The function that ident references can be either a compiled function or a built-in function.
The 'delete' statement is used to delete an attribute or attributes from the incoming request. Its syntax is:
delete attribute-name; delete attribute-name(n);
The first variant deletes all the attributes of the given type. The second variant deletes only the nth occurrence of the matching attribute.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Rewrite uses POSIX regular expressions (See (regex)Top section `Regular Expression Library' in Regular Expression Library, for the detailed description of these).
You control the exact type of regular expressions by the use of the
pragmatic comment
regex. Its syntax is as follows:
#pragma regex option-list
Option-list is a whitespace-separated list of options. Each option is one of the following words prefixed with '+' or '-':
Use POSIX extended regular expression syntax when interpreting regular expressions.
Do not differentiate case. Subsequent regular expression comparisons will be case insensitive.
Match-any-character operators don't match a newline.
A non-matching list ('[^...]') not containing a newline does not match a newline.
Match-beginning-of-line operator ('^') matches the empty string immediately after a newline.
Match-end-of-line operator ('$') matches the empty string immediately before a newline.
Prefixing an option with '+' means to enable the corresponding behavior. Prefixing it with '-' means to disable it. Thus, the following statement:
#pragma regex +extended +icase
will enable extended POSIX regular expressions using case-insensitive comparison.
Using the following comment:
#pragma regex -extended
will switch to the basic POSIX regular expressions.
The settings of a
regex pragmatic comment remain in force up to
the end of current source file, or to the next
regex comment,
whichever occurs first.
For compatibility with previous versions, GNU Radius uses the following defaults:
#pragma regex -extended -icase -newline
i.e. all regular expressions are treated as basic POSIX, comparison is case-sensitive.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The following built-in functions are provided:
Returns the length of the string s.
length("string") ⇒ 6
Returns the index of the first occurrence of the character c in the string s. Returns -1 if no such occurrence is found.
index("/raddb/users", 47) ⇒ 0 index("/raddb/users", 45) ⇒ -1
Returns the index of the last occurrence of the character c in the string s. Returns -1 if no such occurrence is found.
rindex("/raddb/users", 47) ⇒ 6
Returns the substring of s of length at most length starting at position start.
substr("foo-bar-baz", 3, 5) ⇒ "-bar-"
All character positions in strings are counted from 0.
This function regards the buffer argument as consisting of fields separated with any amount of whitespace. It extracts and returns the nth field. n is counted from 1.
field("GNU's not UNIX", 1) ⇒ "GNU's" field("GNU's not UNIX", 2) ⇒ "not" field("GNU's not UNIX", 3) ⇒ "UNIX" field("GNU's not UNIX", 4) ⇒ ""
Outputs its argument to the Radius log channel
info. Returns 0.
For debugging purposes.
Converts the Internet host address str from the standard numbers-and-dots notation into the equivalent integer in host byte order.
inet_aton("127.0.0.1") ⇒ 2130706433
Converts the Internet host address ip given in host byte order to a string in standard numbers-and-dots notation.
inet_ntoa(2130706433) ⇒ "127.0.0.1"
Converts the integer n, regarded as long, from host to network byte order.
Converts the integer n, regarded as long, from network to host byte order.
Converts the integer n, regarded as short, from host to network byte order.
Converts the integer n, regarded as short, from network to host byte order.
For each substring matching the regular expression regex in the string str, substitute the string repl, and return the resulting string.
gsub("s","S","strings") ⇒ "StringS" gsub("[0-9][0-9]*","N","28 or 29 days") ⇒ "N or N days" gsub("[()'\"]","/","\"a\" (quoted) 'string'") ⇒ "/a/ /quoted/ /string/"
Replace all non-printable characters in string S by their corresponding hex value preceeded by a percent sign. Return the resulting string. Printable are alphabetical characters, decimal digits and dash ('-'). Other characters are considered non-printable. For example:
qprn("a string/value") ⇒ "a%20string%2Fvalue"
Replace all non-printable characters in string str by their three-digit octal code prefixed with a backslash, or by their C escape notation, as appropriate. Non-printable characters depend on the locale settings. For example, suppose that the current locale is set to ISO-8859-1 (a so called "Latin-1" character set) and ∗ represents a tab character. Then:
quote_string("François contains non∗printable chars") ⇒ "Fran\347ois contains non\tprintable chars"
Replace C escape notations in string str with corresponding characters using current locale. For example, for ISO-8859-1 locale:
unquote_string("Fran\347ois") ⇒ "François"
Returns the copy of the string str with all alphabetical characters converted to upper case. For example:
toupper("a-string") ⇒ "A-STRING"
Returns the copy of the string str with all alphabetical characters converted to lower case. For example:
tolower("A-STRING") ⇒ "a-string"
Converts integer RADIUS request code to its textual representation as per RFC 3575. This function is useful in logging hooks (see section Logging hooks).
request_code_string(4) ⇒ "Accounting-Request"
The native language support is provided via the functions described
below. These functions are interfaces to GNU
gettext library.
For the information about general concepts and principles of
Native Language Support, please refer to
gettext utilities: (gettext)Top section `gettext' in GNU
gettext utilities.
The default current textual domain is 'radius'.
Sets the new value for the current textual domain. This domain is used by
the functions
gettext and
Returns the name of the previously used domain.
The function returns the translation of the string msgid if it is available in the current domain. If it is not available, the argument itself is returned.
The second form of this function provides a traditional shortcut notation.
For a detailed description of the GNU
gettext interface,
refer to (gettext)Interface to gettext section `Interface to gettext' in GNU
gettext utilities.
Returns the translation of the string msgid if it is available in the domain domain. If it is not available, the argument itself is returned.
ngettext function is used to translate the messages that
have singular and plural forms. The msgid_singular parameter
must contain the singular form of the string to be converted. It is
also used as the key for the search in the catalog. The
msgid_plural parameter is the plural form. The parameter
number is used to determine the plural form. If no message
catalog is found msgid_singular is returned if
number == 1, otherwise msgid_plural.
For a detailed description of the GNU
gettext interface for the
plural translation,
refer to (gettext)Plural forms section `Additional functions for plural forms' in GNU
gettext utilities.
Similar to
ngettext, but searches translation in the given domain.
The following functions are used to read some internal fields of a RADIUS request.
Returns source IP address of the currently processed request. This function
can be used to add
NAS-IP-Address attribute to the requests
lacking one, e.g.:
integer restore_nas_ip() { if (!*%[NAS-IP-Address]) %[NAS-IP-Address] = request_source_ip(); return 0; }
Returns the source UDP port.
Returns the request identifier.
Returns the request code.
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The name Guile stands for GNU's Ubiquitous Intelligent Language for Extensions. It provides a Scheme interpreter conforming to the R4RS language specification. This section describes use of Guile as an extension language for GNU Radius. It assumes that the reader is sufficiently familiar with the Scheme language. For information about the language, refer to (r4rs)Top section `Top' in Revised(4) Report on the Algorithmic Language Scheme. For more information about Guile, see (guile)Top section `Overview' in The Guile Reference Manual.
Scheme procedures can be called for processing both authentication
and accounting requests. The invocation of a Scheme procedure for an
authentication request is triggered by the
attribute; the invocation for an accounting request is triggered
by the
Scheme-Acct-Procedure attribute. The following sections
address these issues in more detail.
|10.3.1 Data Representation
|10.3.2 Authentication with Scheme
|10.3.3 Accounting with Scheme
|10.3.4 Radius-Specific Functions
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
A/V pair lists are the main object Scheme functions operate upon. Scheme is extremely convenient for representation of such objects. A Radius A/V pair is represented by a Scheme pair; e.g.,
Session-Timeout = 10
is represented in Guile as
(cons "Session-Timeout" 10)
car of the pair can contain either the attribute dictionary
name or the attribute number. Thus, the above pair may also be
written in Scheme as
(cons 27 10)
Session-Timeout corresponds to attribute number 27).
Lists of A/V pairs are represented by Scheme lists. For example, the Radius pair list
User-Name = "jsmith", User-Password = "guessme", NAS-IP-Address = 10.10.10.1, NAS-Port-Id = 10
is written in Scheme as
(list (cons "User-Name" "jsmith") (cons "User-Password" "guessme") (cons "NAS-IP-Address" "10.10.10.1") (cons "NAS-Port-Id" 10))
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The Scheme procedure used for authentication must be declared as follows:
Its arguments are:
The list of A/V pairs from the incoming request
The list of A/V pairs from the LHS of the profile entry that matched the request
The list of A/V pairs from the RHS of the profile entry that matched the request
The function return value determines whether the authentication will
succeed. The function must return either a boolean value or a pair.
The return of
#t causes authentication to succeed. The return
#f causes it to fail.
For a function to add something to the reply A/V pairs, it should return a pair in the form
(cons return-code list)
where return-code is a boolean value of the same meaning as described above. list is a list of A/V pairs to be added to the reply list. For example, the following function will always deny the authentication, returning an appropriate message to the user:
(define (decline-auth request-list check-list reply-list) (cons #f (list (cons "Reply-Message" "\r\nSorry, you are not allowed to log in\r\n"))))
As a more constructive example, let's consider a function that allows the authentication only if a user name is found in its internal database:
(define staff-data (list (list "scheme" (cons (list (cons "NAS-IP-Address" "127.0.0.1")) (list (cons "Framed-MTU" "8096"))) (cons '() (list (cons "Framed-MTU" "256")))))) (define (auth req check reply) (let* ((username (assoc "User-Name" req)) (reqlist (assoc username req)) (reply-list '())) (if username (let ((user-data (assoc (cdr username) staff-data))) (rad-log L_INFO (format #f "~A" user-data)) (if user-data (call-with-current-continuation (lambda (xx) (for-each (lambda (pair) (cond ((avl-match? req (car pair)) (set! reply-list (avl-merge reply-list (cdr pair))) (xx #t)))) (cdr user-data)) #f))))) (cons #t reply-list)))
To trigger the invocation of the Scheme authentication function, assign
its name to the
Scheme-Procedure attribute in the RHS of a
corresponding 'raddb/users' profile. For example:
DEFAULT Auth-Type = SQL Scheme-Procedure = "auth"
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
The Scheme accounting procedure must be declared as follows:
Its argument is:
The list of A/V pairs from the incoming request
The function must return a boolean value. The accounting succeeds only
if it has returned
Here is an example of a Scheme accounting function. The function dumps the contents of the incoming request to a file:
(define radius-acct-file "/var/log/acct/radius") (define (acct req) (call-with-output-file radius-acct-file (lambda (port) (for-each (lambda (pair) (display (car pair) port) (display "=" port) (display (cdr pair) port) (newline port)) req) (newline port))) #t)
|[ < ]
|[ > ]
|[ << ]
|[ Up ]
|[ >> ]
|[ ? ]
Delete from av-list the pairs with attribute attr.
Merge src into dst.
#t if all pairs from list are present in target.
Return a dictionary entry for the given attribute name or
#f if
no such name was found in the dictionary.
A dictionary entry is a list in the form
where the arguments are as follows:
The attribute name
The attribute number
The attribute type
The vendor PEC, if the attribute is a vendor-specific one,
#f otherwise.
Returns the dictionary name of the given value for an integer-type attribute attr, which can be either an attribute number or its dictionary name.
Convert a symbolic attribute value name into its integer representation.
Convert a PEC to the vendor name.
Open Radius logging to the severity level prio.
Close a Radius logging channel opened by a previous call to
Interpret string as an invocation of a function in Rewrite language and execute it.
Return value: return of the corresponding Rewrite call, translated to the Scheme data type.
Execute a Rewrite language function.
(car arglist) is interpreted as a name of the Rewrite
function to execute, and
(cdr arglist) as a list of
arguments to be passed to it.
Return value: return of the corresponding Rewrite call, translated to the Scheme data type.
Scheme interface to the system
openlog() call.
Scheme interface to the system
syslog() call.
Scheme interface to the system
closelog() call.
Write the supplied data into the radutmp file. If radwtmp_file is not nil, the constructed entry is also appended to wtmp_file.
list is:
The user name
The original user name from the request
The value of the
NAS-Port-Id attribute
A number or character indicating the port type
The session ID
The value of the
Calling-Station-Id attribute from the request
The framed IP assigned to the user
The NAS IP
A number or character indicating the type of the connection
|[ << ]
|[ >> ]
|[ ? ]
This document was generated by Sergey Poznyakoff on December, 6 2008 using texi2html 1.78.


text:
Don't ask House Speaker Joe Straus about the Boy Scouts controversy over gay membership. "I have two daughters," he quipped Wednesday. "It's not an issue I care to be distracted over."
Instead, the San Antonio Republican said his top priority this session is solving the state's water problems, and he doesn't expect much of a fight from his fellow House members. During a live interview sponsored by the Texas Tribune, Straus said he expects he'll have enough votes to spend $2 billion from the state's rainy day fund on water projects, as proposed by Natural Resources Chairman Allan Ritter.
"I can't imagine anyone would be against a solution to our water problems in Texas," Straus said.
The House speaker was less committal about dipping into the rainy day fund to attack another problem: transportation. He said he was open to the idea and also would consider raising some transportation-related fees such as the cost of a driver's license.
Don't, however, expect lawmakers to pour an extra $10 billion into public education this year, as Judge John Dietz suggested may be necessary to adequately fund the state's schools, Straus said.
"Do you have that money?" asked Texas Tribune editor-in-chief Evan Smith.
"I don't, no," Straus said, drawing laughs from the crowd.
Straus said the state may be able to fund some "targeted areas" in education, though he didn't elaborate. He also avoided specifics on how Texas could expand Medicaid but he didn't rule out the possibility, if the federal government would allow the state to ensure "that these patients had some skin in the game."


text:
This Facebook page is documenting debris from Japan's tsunami, aiming to return items to their owners
It's been just over a year since a devastating tsunami hit Japan, and the Maritime Museum of British Columbia (MMBC) has come up with the latest online project aiming to help survivors, in a unique way, with the use of a Facebook page.
With everything from 'ghost ships' to toothbrushes making their way across the Pacific Ocean, there is an estimated 1.5 million tons of debris floating from Japan to North America.
Inviting users to upload images of the debris they have found on North American shores, the page aims not only to document all of these items, and determine their origins, it also aims to connect lost belongings with their owners.
This is not the first way in which technology has been used in one way or another to either alleviate the effects of the tsunami, or document them. We've seen everything from robotic seals comforting tsunami victims to the documentation of the recovery process in Japan through satellite images provided by Google.
The museum will play an active role in identifying the content of the photos:
Moderators at the museum will attempt to determine the origin of debris, assess any potential value and share the photos and add comments. Japanese visitors to the site could scan the site for lost or recognizable items. In some cases where an object has been collected from the beach it may be able to be returned to its owner through the Japanese Consulate.
The page is an amazing testament to something which makes us more than happy to pull out a tired and over-used cliché about how the Internet makes it easier than ever to connect with people from all over the world.
It will be fascinating to watch and see the kinds of things that wind up on North America's shores, almost like thousands of accidental 'messages in bottles', so to speak.
If successful, the project could also see those items make their way back to Japan, reuniting sentimental or prized possessions with their Japanese owners.
The Tsunami Debris Project is another wonderful example of how our online connectivity has the potential to make us better human beings.
Read next: Last week in Asia: Apple soars in China, Samsung tops global mobile sales and more


text:
Dowdle Jigsaw Puzzles
Dowdle Jigsaw Puzzles are a great gift for the puzzle fanatic and lover of folk art. These are high quality puzzles of the places you love the most. There are several options to choose from cities to national parks, children's themes, sports, military, and holidays. Find the jigsaw puzzle that's right for you and your loved ones. Discover the world through the eyes of renowned folk artist Eric Dowdle, known for his gift of capturing the character and traditions of each place he visits. Experience the personality and charm of these historic and scenic places with a high quality jigsaw puzzle.
Check out our new video spotlighting the Jigsaw Puzzles features and what makes them such great quality. We also have a No Missing Pieces policy incase you get a puzzle that is missing a piece.


text:
The Canadian flag was removed from its spot inside the Quebec legislature as members of the pro-independence Parti Quebecois took the oath of office Monday.
The removal of the Maple Leaf was part of a longstanding see-saw ritual: it had been long absent in the legislature but was restored nine years ago when Jean Charest's Liberals took office and placed it next to the Quebec flag at the Speaker's chair in the building's ceremonial chamber.
It was gone again Monday as the PQ's 54-member, minority-government caucus took the oath of office in the ornate old upper chamber, known as the Red Room, where the Quebec Fleur-de-lis was once again standing alone.
The PQ officially takes office Wednesday, when premier-designate Pauline Marois will introduce her cabinet.
While the Canadian flag was gone, for the Parti Quebecois, there was still no escaping the Queen.
Every member of the PQ caucus swore an oath to the monarch, which is a prerequisite for taking office in Canada. This after the party had complained during the campaign about the increased presence of the Crown under the Harper Conservatives.
But there were no sarcastic expressions, sighs, rolled eyeballs or any other visible form of protest when members stood, one at a time, to swear the oath.
One newly elected Pequiste, 20-year-old Leo Bureau-Blouin, had offered only the mildest protest on his Twitter account. He posted that part of the oath on his Twitter feed and included his own two-word complaint: "Good grief."
After the event, another newly elected Pequiste conceded that swearing an oath to the Crown wasn't exactly a thrill for a Quebec independentist.
"That (reference to the Queen) wasn't the most interesting moment," Pierre Duchesne said.
But Duchesne, who before the election was the Quebec City bureau chief for the French-language CBC, explained why the ceremony occurred without any gripes. He said it was important to show, "respect for certain institutions."
The PQ was elected two weeks ago with a minority mandate. It now holds a four-seat advantage in the legislature after winning the popular vote by less than one percentage point.
Marois welcomed her new team with a speech.
She suggested that the election of a PQ government would help restore Quebecers' pride.
"When a people rediscovers its pride and its confidence nothing, absolutely nothing, becomes impossible for it," Marois said during a festive ceremony in the chamber.
She promised to lead a government of "unimpeachable integrity," following a scandal-plagued term that saw her predecessors call a corruption inquiry that is now underway.


text:
Nail'd It - Only on LifeStyle YOU
The 'little black dress' through the decades
How to create a contemporary Christmas table setting
How to create a traditional Christmas table setting
How to create a native table setting
Create these easy Halloween makeup looks for kids - skull
Create these easy Halloween makeup looks for kids - Bambi
Meet the owners: Sydney empty nesters want to cash in their booming home
Meet the owners: Will the Newman's list their Queenslander?
Meet the Extreme Cake Makers
Only do what your heart tells you: Princess Diana's enchanting legacy
Trudi meets Siri
How Nadi X smart yoga pants work
Madhattan - Aussie Outback to New York Runway
Is upcycling the future of fashion?
Common Sense: Meet the cast of your new TV obsession
70 Years of Dior
Nicole Kidman and Naomi Campbell meet at Cannes
How to deal with a tantrum
Meet the Baker - Jeremy
Meet the Baker - Monica


text:
- Product Description
- Reviews
- Add Review
Made for short runs when you want a barefoot-like feel, the Nike Free RN Flyknit 2018 Men's Running Shoe is the lightest in the Free RN family. Its sock-like upper has more stretch yarns than previous versions, so it hugs your feet more than ever. The innovative sole has an updated construction, yet still expands and contracts with every movement. The packable design makes the shoe easy to stuff into your bag—so you can get in a few miles on the fly.
Better Fit
This version of Flyknit has added stretch yarns for an even more snug, foot-hugging fit, especially in the heel. The upper is easy to collapse, so you can quickly slide the shoe into your tote or backpack.
Inspired by the Flyknit Racer, the Flyknit design features more open knit on the sides. This lets air flow freely to help keep your feet cool.
All Natural Movement
The soft, lightweight sole mimics your foot's natural movement through its innovative pattern. It expands and contracts with every landing and push-off. This provides a natural feel and a barefoot-like sensation, kind of like an extension of your foot.
More Details


text:
Benedict XVI appoints German financier to oversee Vatican bank
VATICAN CITY -- Pope Benedict XVI signed off on one of the last major appointments of his papacy Friday, approving a German lawyer and financier to head the Vatican's embattled bank.
Ernst von Freyberg has solid financial and Catholic credentials as a former investment banker and member of the Sovereign Military Order of Malta, an ancient chivalrous order drawn from European nobility.
The appointment ends a nine-month search after the Institute of Religious Works ousted its previous president, Ettore Gotti Tedeschi, for incompetence. The ouster came just as the Vatican was submitting its finances to a review by a Council of Europe committee in a bid to join the list of financially transparent countries.
The Vatican said von Freyberg, currently the chairman of a Hamburg-based ship component group Blom+Voss Group, had been appointed by the bank's commission of cardinals and that the pope had "expressed his full consent."
The appointment may well be one of the last major decisions of Benedict's papacy given his planned retirement Feb. 28, and signals what the Vatican hopes will be a revived push to clean up its reputation in international financial circles.
The Vatican passed the Council of Europe Moneyval committee's transparency test over the summer, but the IOR and the Vatican's financial watchdog agency received failing grades. The new president will be tasked with bringing the IOR into compliance by Moneyval's next review.
Meanwhile, the Vatican bank is being drawn into a new controversy over the new president being chairman of a shipbuilder for the German navy.
The Vatican spokesman was caught off-guard when a journalist noted that the German shipbuilder that von Freyberg chairs, Blohm+Voss Group, has a military component. The Rev. Federico Lombardi later issued a statement saying the company repairs and transforms cruise ships and builds yachts -- and is currently part of a consortium that is building four frigates for the German navy.


text:
Sweet write up.
I'd love to check it out with the lifts spinning. They say you can ride up or shuttle but during the week, everything is shut down except Roly Grail and Knightslayer.
The one time I rode jester, I though it was fun as hell.
How does the Enchanted Forest compare?
Thanks for posting!
Sent from my iPhone using AlpineZone


text:
Healthy Development
The first weeks, months, and years of every child's life lay the foundation for success in school. Factors such as poverty, poor nutrition, lack of preventive health care, substance abuse, maternal depression, and family violence put young children at risk. Children who experience several of these risk factors are often far behind their more advantaged peers from the start.
States can help by establishing policies that promote medical leave, ensure that families have access to insurance for health and mental health, and provide work supports to parents. At the community level, cities and counties are developing comprehensive programs that meet the needs of parents with infants and toddlers, some targeting higher-risk babies like those in foster care.
Low-income children are disproportionately at risk for risk factors that threaten healthy development. It is in the public interest to promote policies, services, and supports that can help change a negative development course to a positive one.
Recent Publications
Young Children at Risk
National and State Prevalence of Risk Factors
Fact Sheet, October 2012
What Can CCDF Learn from the Research on Children's Health and Safety in Child Care?
Policy Brief, May 2012
Preconception Health and Health Care and Early Childhood Comprehensive Systems
Opportunities for Collaboration
Report, May 2012
Paid Family Leave
Stengthening Families and Our Future
Report, April 2012
Comprehensive Obesity Prevention in Early Childhood
Promising Federal and State Initiatives
Report, March 2012


text:
Western-backed Syrian rebel chief Mouaz al-Khatib quits coalition
BEIRUT The leader of the Western-backed Syrian opposition coalition resigned Sunday, citing what he called the insufficient lack of international support for those seeking to topple President Bashar Assad.
Mouaz al-Khatib, a respected preacher who has led the Syrian National Coalition since soon after its creation in November, said in a statement posted on his Facebook page that he was making good on a promise to quit if certain undefined "red lines" were crossed.
"I am keeping my promise today and announcing my resignation from the National Coalition so that I can work with freedom that is not available inside the official institutions," he said.
He also blamed world powers for providing inadequate support for the rebel cause and complained that many "international and regional parties" insisted on pushing the opposition toward dialogue with the regime. Most opposition leaders and activists say Assad's regime has killed too many people to be part of the conflict's solution.
"All that has happened to the Syrian people from destruction of infrastructure to the arrest of tens of thousands to the displacement of hundreds of thousands to other tragedies is not enough for an international decision to allow the Syrian people to defend themselves," the statement said.
Al-Khatib was chosen to serve as president of the opposition's Syrian National Coalition, which was formed in November of last year under international pressure to serve as the opposition's official liaison with other countries and coordinate anti-Assad forces inside and outside of Syria.
Despite electing a new, U.S.-educated prime minister to head a planned interim government last week, the coalition has failed to establish itself as the top rebel authority on the ground in Syria, where hundreds of independent rebel brigades are fighting a civil war against Assad's forces.
The Coalition did not immediately respond to al-Khatib's resignation.
Al-Khatib's spokesman could not be reached for further comment, but al-Khatib has often used his personal Facebook page to release statements.
The Syrian government has largely ignored the opposition coalition and says the civil war is an international conspiracy to weaken Syria.
The U.N. says more than 70,000 people have been killed since the crisis began in March, 2011.


text:
History on the Net
Authentic History
social change
the prohibition era
> music
Music About The Prohibition Era
Music About The Prohibition Era
A more detailed examination of this topic is planned for the future. In the meantime, this collection of images and sounds is presented.
Sheet Music: "Prohibition Blues" (1917)
Sheet Music: "Ev'ry Day'll Be Sunday When The Town Goes Dry" (1918)
Sheet Music: "America Never Took Water And America Never Will" (1919)
Sheet Music: "The Alcoholic Blues" (1919)
Sheet Music: "No Beer, No Work" (1919)
Sheet Music: "Prohibition Blues" (1919)
"Prohibition Blues" by Nora Bayes (1919)
Sheet Music: "How Are You Goin' To Wet Your Whistle (When the whole darn world goes dry)" (1919)
Sheet Music: "What'll We Do On A Saturday Night? (When The Town Goes Dry)" (1919)
Sheet Music: "I'm Going To Settle Down Outside of London Town (When I'm Dry, Dry, Dry)" (1919)
Sheet Music: "At The Prohibition Ball" (1919)
Sheet Music: "John Barleycorn Goodbye" (1919)
Sheet Music: "Everybody Want A Key To My Cellar" (1919)
"Everybody Wants A Key To My Cellar" by Arthur Fields (1919)
"Everybody Wants A Key To My Cellar" by Bert Williams (1919)
"Bring Back Those Wonderful Days" by Arthur Fields (1919)
Sheet Music: "I've Got The Prohibition Blues (For My Booze)" (1919)
"The Alcoholic Blues" by Louisiana Five (1919)
Sheet Music: "(If Kisses Are As Intoxicating As They Say), Prohibition You Have Lost Your Sting" (1919)
Sheet Music: "I Never Knew I Had A Wonderful Wife (Until The Town Went Dry)" (1919)
"You Don't Need The Wine To Have a Wonderful Time" by Eddie Cantor (1919)
Sheet Music: "Green River" (1920)
Sheet Music: "I'll See You In C-U-B-A" (1920)
"I'll See You In
C-U-B-A" by Jack Kaufman (1920)
"I'll See You In C-U-B-A" by Ted Lewis Jazz Band (instrumental) (1920)
Sheet Music: "It Will Never Be Dry Down In Havana (No Matter What Happens 'Round Here)" (1920)
"It's The Smart Little Feller Who Stocked Up His Cellar (That's Getting The Beautiful Girls)" (1920)
Sheet Music: "Oh! Doctor" (1920)
Sheet Music: "Save a Little Dram For Me" (1920)
Sheet Music: "The Moon Shines on the Moonshine" (1920)
"The Moon Shines on the Moonshine" by Sidney Phillips (1920)
"The Moon Shines on the Moonshine" (instrumental) by Ted Lewis Jazz Band (1920)
"Cohen on Prohibition" by Monroe Silver (1920)
Sheet Music: "Whoa January (You're Going To Be Worse Than July)" (1920)
Sheet Music: "I'm The Ghost of That Good Man John Barleycorn" (1922)
Sheet Music: "The Moonshine Shudder" (1923)
"Just a Little Drink" by Paul Whiteman and His Orchestra (1925)
"Dry Voters and Wet Drinkers" by Joe Adams and James Clark (1930)
"Prohibition Blues" by The Missourians (1930)
Last modified July 12, 2012


text:
- This event has passed.
Lisbon Public Library Story Hour
January 5, 2017 @ 10:30 am - 11:00 am
|Recurring Event (See all)
An event every week that begins at 10:30 am on Thursday, repeating until May 21, 2020
Story Hour continues all year long at Lisbon Public Library with Miss Amy and Leo! Come enjoy stories, fingerplays, songs and simple crafts on Thursdays at 10:30 AM.


text:
XMM-Newton discovers a new class of black holes
Astronomers using ESA's XMM-Newton X-ray observatory have discovered a black hole weighing more than 500 solar masses, a missing link between lighter stellar-mass and heavier supermassive black holes, in a distant galaxy. This discovery is the best detection to date of a new class that has long been searched for: intermediate mass black holes.
Due to appear tomorrow in the journal Nature, the discovery has been made by an international team of researchers working with XMM-Newton data, led by Sean Farrell from the Centre d'Etude Spatiale des Rayonnements, now based at the University of Leicester.
Stellar-mass black holes (about three to twenty times as massive as the Sun) and supermassive black holes (several million to several thousand million times as massive as the Sun) have long been known to exist. Because of the large gap between these two extremes, scientists have speculated the existence of a third, intermediate class of black holes, with masses between a hundred and several hundred thousand solar masses.
Up until now, scientists were unable to confirm that this elusive intermediate class actually existed.
Farrell's team were analysing archived data obtained by XMM-Newton, looking for neutron stars and white dwarves, when they stumbled upon a most peculiar object that was observed on 23 November 2004.
Called HLX-1 (Hyper-Luminous X-ray source 1), it lies towards the outskirts of the galaxy ESO 243-49, approximately 290 million light-years from Earth. If it is indeed located in this distant galaxy, HLX-1 is very luminous in X-rays; peaking at 260 million times the luminosity of the Sun.
On analysing the light originating from HLX-1, the team found that the X-ray signature was inconsistent with any object other than a feeding black hole. The measured brightness was too low for it to be in our own Galaxy, and the lack of observed radio or optical emission from the location of HLX-1 in addition to the observed X-ray signature indicates that it is unlikely to be a background galaxy.
HLX-1 is very luminous in X-rays; peaking at 260 million times the luminosity of the Sun.
This means that the source of the X-ray emission must lie in ESO 243-49. Its location is too far away from the galactic centre for it to be a supermassive black hole, and too bright for a stellar-mass black hole feeding at the maximum rate.
To be sure that this really was a single astronomical object, and not a cluster of several fainter sources that was shining brightly, the team used XMM-Newton to observe it again on 28 November 2008.
Comparing the two observations, they found that the signature of X-rays originating from HLX-1 varied significantly in time and concluded from this that it must be a single object. They found that the only way to explain its intense luminosity was if HLX-1 harboured a black hole greater than 500 solar masses. No other physical explanation could account for what they had seen.
The few intermediate-mass black hole candidates that have been discovered so far could be accounted for by other theories, but this one stood out as it was brighter than all the previous candidates by a factor of almost 10. The team had their hands on the best detection of an intermediate mass black holes to-date.
While it is already known that stellar-mass black holes are the remnants of massive stars, how supermassive black holes form is still unknown. One of the possible scenarios involves mergers of intermediate mass black holes. To ratify such a theory, it is essential to prove their existence in the first place.
This is why detections such as this by XMM-Newton are essential. It will help to understand just how supermassive black holes, such as that at the centre of our Galaxy, form.
The team have planned further observations in X-ray, ultraviolet, optical, infrared and radio wavelengths in the near future to better understand this unique object and the environment around it.
For more information:
Sean Farrell, University of Leicester
Email: saf28 @ star.le.ac.uk
Didier Barret, Centre d'Etude Spatiale des Rayonnements
Email: didier.barret @ cesr.fr


text:
Moot Court
Pre-Law Advising Program
Scovel Hall
944 College Mall
Wooster, OH 44691
Phone: 330-263-2380
Fax: 330-263-2249
Students who are interested in the law or debate are encouraged to participate in Moot Court, whatever their major. Although the Pre-Law Advising program sponsors Moot Court, definite plans to attend law school are not necessary. Any interested COW student is welcome to participate in Moot Court.
Moot Court simulates appellate argument before the U.S. Supreme Court. Moot Court is thus different from mock trial in that students argue constitutional and statutory questions that are stated in a hypothetical Supreme Court case formulated by the American Moot Court Association (AMCA). For example, the 2009-2010 AMCA hypothetical case problem, State of Olympus v. William DeNolf, Jr., concerns two of the most important civil liberties protected by the U.S. Constitution: the Fourth Amendment's guarantee that state searches of "persons, houses, papers, and effects" be reasonable, and the Eighth Amendment's prohibition against "cruel and unusual punishment." More specifically, the two constitutional questions raised in the case are: 1) Does the deployment of a visual enhancement device without a warrant violate the Fourth and Fourteenth Amendments to the United States Constitution? 2) Does the sentence of life in prison without the possibility of parole imposed on Respondent violate the Eighth and Fourteenth Amendments to the United States Constitution?
For the serious pre-law student, Wooster offers a course that focuses on U.S. constitutional law, legal writing and appellate argument. Political Science 215, Constitutional Law and Appellate Advocacy, is offered each fall and incorporates the Moot Court case problem. Participation in Moot Court is a requirement for students in Constitutional Law and Appellate Advocacy.