I really appreciate your suggestions...I am ready to go ahead with this 
information to develop some custom admin Interface to provide such 
functionality...

Thanks again
Abhishek Srivastav
Tata Consultancy Services
Cell:- +91-9883389968
Mailto: [email protected]
Website: http://www.tcs.com
____________________________________________
Experience certainty.   IT Services
                        Business Solutions
                        Outsourcing
____________________________________________



From:
Geert Josten <[email protected]>
To:
General MarkLogic Developer Discussion <[email protected]>
Date:
09/08/2011 08:20 PM
Subject:
Re: [MarkLogic Dev General] Read only access to Admin interface.....
Sent by:
[email protected]



Just be careful with how you use this. Not something to make publicly 
available. And it could easily break on next MarkLogic Server update..
 
Kind regards,
Geert
 
Van: Geert Josten 
Verzonden: donderdag 8 september 2011 16:43
Aan: General MarkLogic Developer Discussion
Onderwerp: RE: [MarkLogic Dev General] Read only access to Admin 
interface.....
 
Hi Abhishek,
 
Yes, that is possible. You will have to do that yourself though.
 
You might be interested in the following though. The basics seem to work 
at least. You might need to do a thorough check though whether it 
sufficiently blocks updates, it now only looks at the request method..
 
Insert the following in a file called default.xqy (anywhere you like, as 
long as it is callable through some HTTP App Server):
 
xquery version "1.0-ml";
 
declare namespace h="http://www.w3.org/1999/xhtml";;
 
declare option xdmp:mapping "false"; 
 
declare variable $base-uri := resolve-uri('.', xdmp:get-request-path());
 
declare variable $admin-uri := 'http://localhost:8001';
declare variable $admin-user := 'admin';
declare variable $admin-pass := 'admin';
 
declare variable $uri := xdmp:get-request-field("uri", '/');
 
declare variable $xsl :=
               <xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"; version="2.0" xmlns:h="
http://www.w3.org/1999/xhtml";>
                              <xsl:template match="@*|node()">
                                            <xsl:copy>
 <xsl:apply-templates select="@*|node()"/>
                                            </xsl:copy>
                              </xsl:template>
 
                              <xsl:template match="@href | @src | 
@action">
                                            <xsl:attribute 
name="{{name()}}" select="concat('{$base-uri}?uri=', encode-for-uri(.))"/>
                              </xsl:template>
 
                              <xsl:template match="@style">
                                            <xsl:attribute 
name="{{name()}}">
 <xsl:analyze-string select="." regex="url\([^\)]+\)"> 
 <xsl:matching-substring> 
               <xsl:value-of select="concat('url({$base-uri}?uri=', 
encode-for-uri(substring(., 5, string-length(.) - 5)), ')')"/>
 </xsl:matching-substring> 
 <xsl:non-matching-substring> 
               <xsl:value-of select="."/> 
 </xsl:non-matching-substring> 
 </xsl:analyze-string> 
                                            </xsl:attribute>
                              </xsl:template>
               </xsl:stylesheet>;
 
declare function local:fix-links($contents) as item()* {
               xdmp:xslt-eval($xsl, $contents)
};
 
let $uri :=
               if (xdmp:get-request-method() = 'GET') then
                              $uri
               else
                              (: force 404 on POST by proxying a 
non-existing page :)
                              "non-exist"
return
               let $response :=
                              xdmp:http-get(
                                            resolve-uri($uri, $admin-uri),
                                            <options xmlns="xdmp:http">
                                                           <authentication 
method="digest">
 <username>{$admin-user}</username>
 <password>{$admin-pass}</password>
 </authentication>
                                            </options>
                              )
               let $set-type := 
 xdmp:set-response-content-type($response[1]//*:headers/*:content-type)
               let $response := $response[2]
               return
                              if ($response/binary()) then
                                            $response
                              else
                                            let $unquote :=
                                                           try {
 xdmp:unquote(
               $response
 )
                                                           } catch ($e) {
 $response
                                                           }
                                            return
                                                           if ($unquote/*) 
then
 local:fix-links($unquote)
                                                           else
 $response
 
Kind regards,
Geert
 
Van: [email protected] [
mailto:[email protected]] Namens Abhishek53 S
Verzonden: donderdag 8 september 2011 14:17
Aan: General MarkLogic Developer Discussion
Onderwerp: Re: [MarkLogic Dev General] Read only access to Admin 
interface.....
 

Geert , 

Thanks for your fast reply....I would like to create custom admin 
interface that will provide subset of Admin monitoring functionality.... 

Abhishek Srivastav
Tata Consultancy Services
Cell:- +91-9883389968
Mailto: [email protected]
Website: http://www.tcs.com
____________________________________________
Experience certainty.        IT Services
                       Business Solutions
                       Outsourcing
____________________________________________ 

From: 
Geert Josten <[email protected]> 
To: 
General MarkLogic Developer Discussion <[email protected]> 
Date: 
09/08/2011 05:37 PM 
Subject: 
Re: [MarkLogic Dev General] Read only access to Admin interface..... 
Sent by: 
[email protected]
 




Hi Abhishek, 
  
Most pages in the Admin interface are shielded with the sec:check-admin 
function, which only tolerates current users that have admin role. And 
users with admin role have always unlimited access to anything. 
  
If you only need a small part of the Admin interface functionality, you 
are best of writing your own using the sec and admin API functions. Bit of 
a long shot, but you could also try to fit a proxy in between that passes 
through GET?s, but blocks POST?s. Not as nice, but perhaps quickest. Not 
sure it blocks all updates though, there could be updating GET?s in the 
Admin interface.. 
  
Kind regards, 
Geert 
  
Van: [email protected] [
mailto:[email protected]] Namens Abhishek53 S
Verzonden: donderdag 8 september 2011 13:57
Aan: General MarkLogic Developer Discussion
Onderwerp: [MarkLogic Dev General] Read only access to Admin 
interface..... 
  

Hi Folks 

I am trying to have read only access to admin console (8001) of ML 
server...User with this role can logged in to Admin interface to monitor 
the activity but can not modify any other configurations... 

The following execute privileges are provided to the custom 
read-only-admin role 

admin-module-read 
admin-ui 
xdmp:license-accepted 
xdmp:license-key-valid 
xdmp:pre-release-expires 
xdmp:read-host-config-file 

Redirecting to security and configuration upgrade page If the user is 
logged in with custom read-only-admin credentials....Going through the 
administrator guide it seems to be impossible as it is mentioned that only 
user with "admin" role can do that... 


Is it not possible to provide read only  access to the Admin 
interface....If not so my next step is to built a custom interface and 
logged in with the user which have no admin-module-write privilege.. 

Sorry for the big mail....Any suggestion will be appreciated. 


Thanks & Regards
Abhishek Srivastav
Tata Consultancy Services
Cell:- +91-9883389968
Mailto: [email protected]
Website: http://www.tcs.com
____________________________________________
Experience certainty.        IT Services
                      Business Solutions
                      Outsourcing
____________________________________________ 
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general


_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to