On Mon, Mar 25, 2013 at 5:20 PM, Raul Kripalani <r...@evosent.com> wrote:
> Sounds good and much simpler to read than yet another bracket-y expression.
> Great addition!
>
> Just being persnickety, is it possible to escape RAW() itself? That is,
> would "RAW(RAW())" evaluate to "RAW()"?
>

Well if we didn't have the existing syntax from camel-jasypt with
ENC(stuff here).
Then we would have a bit more free hands. But we can still change it,
but I kinda like it to be similar/consistent.

The parsing is easier if we have a known start and end token. And the
tokens should be unique so they do not clash with a value an end user
would normally use. So opted for RAW(.

Currently the code does not allow escaping itself. Not sure if there
is such a use-case where people want to configure an option on an
endpoint with a value of RAW() or RAW(abc) or what ever.

We could allow escaping but it would just complicate the parsing
process a little bit more, as it would need to detect the escaped
start token. And be able to pair the end tokens etc.

Again, is there really an real life use-case where people want to
configure a value of RAW(stuff) as the value as_is ?


Though I wonder if we should have a different end token that was more
unique than an ) sign. That makes the parsing easier as well, as ) can
be common to use. eg today we detect the end token as a ) sign
followed by a & sign to denote a new parameter. Or if we reached the
end of the line.

There could potential be a situation where you have a password that is
++secre)&123

Which you configure as:
password=RAW(++secre)&123)&binary=true

Now we have 2 end tokens, eg at
e)&1
3)&b

So we would need to improve the parser, to know that the end token, is
the last )& before a new parameter key is given with eg binary=true.

Using a more unique end token fixes this caveat. We could have
RAW(value)RAW, eg so it would be
password=RAW(++secre)&123)RAW&binary=true


Though not sure if its so "nice".

Any thoughts?


> Thanks,
>
> *Raúl Kripalani*
> Enterprise Architect, Open Source Integration specialist, Program
> Manager | Apache
> Camel Committer
> http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
> http://blog.raulkr.net | twitter: @raulvk
>
> On Mon, Mar 25, 2013 at 4:03 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>
>> Hi
>>
>> Configuring passwords directly in the Camel endpoint uris can be a bit
>> more tricky if the password contains signs such as + & or other
>> symbols.
>>
>> As those symbols would be URI decimal encoded.
>>
>> So inspired by our camel-jasypt component
>> http://camel.apache.org/jasypt
>>
>> Which allows to use an ENC(secret stuff here) syntax to encrypt some
>> content in the uris, eg also for passwords etc.
>>
>> We now have a new RAW(value) syntax as well for endpoint URI options.
>>
>> So if you have the password
>> se+re?t&23
>>
>> Then you can tell Camel to use the value as is as shown below:
>> .to("ftp:j...@myftpserver.com?password=RAW(se+re?t&23)&binary=true"
>>
>> You can see more details here:
>>
>> https://cwiki.apache.org/confluence/display/CAMEL/How+do+I+configure+endpoints
>>
>>
>> I wanted to use the same syntax as we already use, eg for
>> camel-jasypt, and hence went for RAW(value).
>> And I didn't want to introduce a syntax that was to similar to
>> property placeholders, using some kind of [[ ]] tokens.  And hence
>> settled for RAW(value).
>>
>> All the tests passes with this change.
>> And there is also a new ftp unit test where we use a password that
>> would fail in earlier Camel releases.
>>
>> And it should be possible to backport the change to Camel 2.10 branch,
>> if the community thinks its a good idea. Which it could be as this is
>> already a problem for people today to set their passwords in Camel
>> 2.10, eg as reported here:
>> https://issues.apache.org/jira/browse/CAMEL-6176
>>
>> For now the commit is on trunk for the upcoming Camel 2.11 release.
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Email: cib...@redhat.com
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cib...@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to