Anypoint Enterprise Security IP Filter - mule

Hi I am working with Mule Anypoint Studio and I am trying to implement a list of IP's but my program is allowing every request from all IP's and it works only for one request per browser. How it is working i have no Idea. Please elaborate the working . Please don't share Mule Documentation Link because there they have not given much information.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:filters="http://www.mulesoft.org/schema/mule/filters" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/filters http://www.mulesoft.org/schema/mule/filters/current/mule-filters.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
<filters:config name="Filters" doc:name="Filters"/>
<flow name="mule-security-ipFlow1" doc:name="mule-security-ipFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="196.111.1.1" port="8081" doc:name="HTTP" path="ip"/>
<filters:filter-by-ip config-ref="Filters" regex="196.16.4.1,196.17.7.13" doc:name="Filters"/>
<set-payload value="#['Data Mast']" doc:name="Set Payload"/>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
</flow>
</mule>

there are two scenarios here, we can specify regular expression to allow certain ip range requests or we can specify single ip address as part regex attaribute value.
<filters:filter-by-ip config-ref="Filters" regex="${fms.iprange}"
doc:name="verify-ip-address" />
if we want to allow comma separated ip address, its better to write custom filter and do the required logic .

Depending on how you are intending to deploy your flow your other option is to use api-kit to apply the IP whitelist (or blacklist) to your flow as a policy:

Related

No valid operation is selected by Dropbox connector in mule

I try to create a simple application using Mule. Anyway when I select operation "Authorize" I got error. But if I select another operation it works fine!!
I have Mule Server version="CE-3.8.1" and use Anypoint studio Version: 6.2.5
The Complete XML Configuration:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:dropbox="http://www.mulesoft.org/schema/mule/dropbox" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/dropbox http://www.mulesoft.org/schema/mule/dropbox/current/mule-dropbox.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<http:listener-config name="HTTP_Listener_Configuration8881" host="localhost" port="8881" doc:name="HTTP Listener Configuration"/>
<dropbox:config name="Dropbox1" appKey="ovy1i8ak8u43t87" appSecret="7jlhpdzeyddi8d5" doc:name="Dropbox">
<dropbox:oauth-callback-config domain="localhost" localPort="8881" remotePort="8881" path="callback"/>
</dropbox:config>
<http:request-config name="HTTP_Request_Configuration" host="www.mulesoft.com" port="80" doc:name="HTTP Request Configuration"/>
<flow name="dropbox_integration2Flow">
<http:listener config-ref="HTTP_Listener_Configuration8881" path="/authorize" doc:name="HTTP"/>
<dropbox:unauthorize config-ref="Dropbox1" doc:name="Dropbox - authorize"/>
</flow>
<flow name="dropbox_integration2Flow1">
<http:listener config-ref="HTTP_Listener_Configuration8881" path="/" doc:name="HTTP"/>
<dropbox:create-folder config-ref="Dropbox1" path="/mule" doc:name="Dropbox - create"/>
<http:request config-ref="HTTP_Request_Configuration" path="/sites/default/files/3C_mulesoft_logo_updated.svg" method="GET" doc:name="HTTP"/>
<dropbox:upload-stream config-ref="Dropbox1" filename="mulelogo.png" path="/mule" doc:name="Dropbox - upload"/>
<dropbox:get-link config-ref="Dropbox1" path="/mule/mulelogo.png" doc:name="Dropbox - get link"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
</mule>
Is there any reason for this? How to fix it?
It seems to be a bug in the old Mule Dropbox Cloud Connector Mule Studio Extension 3.3.0 (2013). Are you using that one? If you are, I suggest you use the latest available version, Dropbox Connector 3.3.3 (2015), which fixes the error.

amqp ssl connection error

Hi I am trying to create a very simple AMQP connector to talk to my localhost RabbitMQ server using SSL. Without SSL, the connection works fine but I suspect my SSL configuration is incorrect. Can anyone shed light on this? I'm quite a newbie to Mule so apologies if this is ridiculous.
</ssl:connector>
<flow name="here_we_go_againFlow1">
<amqp:inbound-endpoint exchangeName="sales_exchange" queueName="sales_queue" responseTimeout="10000" exchange-pattern="request-response" connector-ref="AMQP_0_9_Connector" doc:name="AMQP-0-9" ref="AMQP_0_9"/>
<ssl:outbound-endpoint host="localhost" port="5671" responseTimeout="10000" doc:name="SSL (TLS)"/>
<echo-component doc:name="Echo"/>
</flow>
I assume you are trying to connect to an AMQP server over SSL. Here is an example using the ampqs transport. Note the namespaces etc.
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amqps="http://www.mulesoft.org/schema/mule/amqps" xmlns:spring="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/amqps http://www.mulesoft.org/schema/mule/amqps/current/mule-amqps.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<amqps:connector name="amqpsDefaultSslConnector" />
<flow name="amqp">
<amqps:inbound-endpoint exchangeName="target-exchange"
exchangeType="fanout" exchangeDurable="true" exchangeAutoDelete="false"
queueName="target-queue" queueDurable="true" queueAutoDelete="false"
queueExclusive="true" routingKey="a.b.c" connector-ref="amqpsDefaultSslConnector" />
....
</flow>
</mule>
There's also more advanced configuration such as setting up key stores etc. Examples can be found here: https://github.com/mulesoft/mule-transport-amqp/blob/master/mule-transport-amqp/src/test/resources/amqps-namespace-config.xml

Invalid Keystore Format when trying to deploy Mule project

I'm just trying to follow some of the Mulesoft tutorials and messing around with them to see if I can figure out how things work. This particular tutorial is one that demonstrates the usage of IMAP and how to use it to get information from an email.
I'm currently using this tutorial, and it was working fine. I then made some changes to just see how things worked. I have a simple flow that looks like this:
IMAP -> Email-to-string -> Logger
And the XML looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:email="http://www.mulesoft.org/schema/mule/email" version="EE-3.6.0" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:context="http://www.springframework.org/schema/context" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:imap="http://www.mulesoft.org/schema/mule/imap" xmlns:imaps="http://www.mulesoft.org/schema/mule/imaps" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/imap http://www.mulesoft.org/schema/mule/imap/current/mule-imap.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd
http://www.mulesoft.org/schema/mule/imaps http://www.mulesoft.org/schema/mule/imaps/current/mule-imaps.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/current/mule-email.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd">
<imaps:connector checkFrequency="100" doc:name="IMAP" name="imapsConnector" validateConnections="true">
<imaps:tls-client path="" storePassword=""/>
<imaps:tls-trust-store path="" storePassword=""/>
</imaps:connector>
<flow name="imap-to-csvFlow1">
<imaps:inbound-endpoint connector-ref="imapsConnector" doc:name="Poll emails" host="imap.gmail.com" password="samplepass" port="993" responseTimeout="10000" user="sampleuser%40gmail.com"/>
<email:email-to-string-transformer doc:name="Email to String"/>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
And the error I'm getting is:
ERROR 2015-06-04 13:34:13,706 [main] org.mule.module.launcher.application.DefaultMuleApplication: null
java.io.IOException: Invalid keystore format
The full console log is obviously a bit more extensive but that's the first error that appears.
If you use IMAPS (as opposed to IMAP), you need to provide valid values for the TLS client and trust store.
For example:
<imaps:tls-client path="clientKeystore" storePassword="mulepassword" />
<imaps:tls-trust-store path="greenmail-truststore" storePassword="password" />
The email transport integration tests have ready made keystores you can play with: https://github.com/mulesoft/mule/tree/mule-3.6.2/transports/email/src/test/resources
Reference: https://developer.mulesoft.com/docs/display/current/IMAP+Transport+Reference#IMAPTransportReference-ConfigurationReference

Mule ESB and maximum flow threads

I went to the following site:
http://www.mulesoft.org/documentation/display/current/Tuning+Performance
and it says to alter the following 2 values:
maxThreadsActive and maxBufferSize
with maxThreadsActive being the number of active threads at anyone time, and maxBufferSize being the number of requests that can wait in a queue
But I am having difficulty finding any examples of how to do this in code.
-- Is there a central Mule ESB file where I can change the default number of maxThreadsActive and maxBufferSize ???
Would this be the dispatcher threading profile. What file would that be ?
--
If there is no central filet, for a synchronous process, how would I change the following code to use a maximum number of active threads to 100 and a maximum number of requests on the queue to 60
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:https="http://www.mulesoft.org/schema/mule/https" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd">
<db:generic-config name="Generic_Database_Configuration" url="jdbc:db2://localhost:50000/TEST:user=instuid;password=instpw;" driverClassName="com.ibm.db2.jcc.DB2Driver" doc:name="Generic Database Configuration"/>
<http:endpoint exchange-pattern="request-response" host="localhost" port="8081" method="POST" name="HTTP" doc:name="HTTP"/>
<flow name="test1Flow1" doc:name="test1Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" contentType="application/json" keepAlive="true" mimeType="application/json"/>
<echo-component doc:name="Echo"/>
</flow>
</mule>
Thanks
You can used a queued-asynchronous processing strategy in you flow. With this approach you can change the number of threads available to the flow.
For Example:
<queued-thread-per-processor-processing-strategy name="ProcessingStrategy" maxThreads="60" minThreads="10" threadTTL="5000" poolExhaustedAction="WAIT" threadWaitTimeout="5000" maxBufferSize="100"/>
<flow name="test1Flow1" doc:name="test1Flow1" processingStrategy="ProcessingStrategy">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" contentType="application/json" keepAlive="true" mimeType="application/json"/>
<echo-component doc:name="Echo"/>
</flow>
"You can specify a separate threading profile for each receiver thread pool, flow thread pool, and dispatcher thread pool". For example:
<http:connector name="DefaultHTTPConnector" clientSoTimeout="120000" keepSendSocketOpen="false" >
<receiver-threading-profile maxThreadsActive="500"/>
<dispatcher-threading-profile maxThreadsActive="500"/>
</http:connector>
or
<configuration>
<default-receiver-threading-profile maxThreadsActive="130" />
</configuration>
I recommend the first option in the flow.
I hope to help;
You cannot add a flow processing strategy on a request-response exchange pattern
Add a global configuration element as follows:

Mule ESB and basic authentication

I wrote a flow accepting JSON, now I want to add http authentication. I want to accept HTTP basic authentication uid and pw.
So I am starting with a Hellow World program first, as follows:
<?xml version="1.0" encoding="UTF-8"?>
<mule version="EE-3.5.0" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
<flow doc:name="HelloWorldFlow1" name="HelloWorldFlow1">
<http:inbound-endpoint doc:description="This endpoint receives an HTTP message." doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081"/>
<set-payload doc:description="This processor sets the payload of the message to the string 'Hello World'." doc:name="Set Payload" value="Hello World"/>
</flow>
</mule>
And I test with the following program:
C:\curl>curl -H "Content-Type: application/json" -u uida:pw -d {"first":"Steven"
} http://localhost:8081
Hello World
C:\curl>
This works, as there is no basic auth configured within th eflow, so it ignores the "-u uid:pw" I sent on the curl command
Now I change the flow as follows ( I put 'uid' in the 'Http Settings->User' field, and 'pw' in the 'Http Seetings->Password' field on the GUI
<?xml version="1.0" encoding="UTF-8"?>
<mule version="EE-3.5.0" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
<flow doc:name="HelloWorldFlow1" name="HelloWorldFlow1">
<http:inbound-endpoint doc:description="This endpoint receives an HTTP message." doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081" password="pw" user="uid"/>
<set-payload doc:description="This processor sets the payload of the message to the string 'Hello World'." doc:name="Set Payload" value="Hello World"/>
</flow>
</mule>
Now when I test I get the following:
C:\curl>curl -H "Content-Type: application/json" -u uida:pw -d {"first":"Steven"
} http://localhost:8081
Cannot bind to address "http://127.0.0.1:8081/" No component registered on that
endpoint
I have done this repeatedly, but I get the same response.
Is there another field that I should have set? Any ideas on how I can resolve this?
Thanks
The user and password attributes are ineffective on inbound HTTP endpoints, they only work on outbound.
Mule uses Spring Security for authentication. This is detailed in the user guide: http://www.mulesoft.org/documentation/display/current/Configuring+the+Spring+Security+Manager , including an example of the http-security-filter that you need to put in the HTTP inbound endpoint.