Client tool to query remote FAST ESP 5.3 server accessible over http - fast-esp

Is there a client tool available to execute FAST queries on a remote FAST ESP 5.3 server that is accessible over http?

If the server is accessible over http, you can probably go directly to the qr (query/results) server on port 15100 of the admin node & send queries to it directly via wget. The entire query api can be used via http, results will come back in xml or plaintext depending on which search template you select (/cgi-bin/xsearch or /cgi-bin/search on generic deployments).
Details on the full query language and url params can be found here:
Fast 5.3 Query Language Parameters Guide (doc hosted on a non-Fast/MS site ... couldn't find it on msdn, but its what you want).
good luck.

Related

Restricting Solr Queries to Web Application

I have an instance of Solr (not Solrcloud) installed on my server, Apache/2.4.7 (Ubuntu), and would like to use with a php web application. I have password protected the admin page, but queries can still be run remotely. I want to restrict my Solr app so that it can only be queried (both read and write) by a web application (php, with Solarium) stored on the same server. What is the best way to do this?
This is more of a server administration question, so it would be better suited on Superuser. That being said, you have a few options:
Make Solr listen to connections on the internal or loopback interface only. This would be 127.0.0.1 or 192.168/16 etc. In solr.in.sh, you can send a parameter to Solr to tell it which IP it should bind to: SOLR_OPTS="$SOLR_OPTS -Djetty.host=127.0.0.1"
Configure your firewall to only allow connections from IPs that should be able to access Solr.
Configure Solr Authentication and Authorization. Zookeeper is required to make this work (you'll have to be running in SolrCloud mode).
Unpack the bundled jetty and set up authentication there. This is not really a good idea, as it will make it harder to upgrade.
The methods suggested in 1 & 2 can also be combined with a proxying / forwarding web server that performs authentication in front of the service (using mod_proxy and friends on other httpds) if you need the service to be exposed through a non-trusted interface.

How to secure data transfer between Rails App on Heroku and a remote IIS Server?

I'm running a Rails app on Heroku's Cedar stack.
I need to access a remote Windows Server (over the internet, not in a LAN) to query a SQL Server database.
First, I used TinyTDS to access the DB but configuring it on Heroku is really painful.
Secondly, I had made a dynamic web page on the IIS remote server and I was making http get requests to retrieve data. But it's not secure.
I need a good and secure solution (ssh tunnel?).
Any help appreciated.
There's nothing wrong with using HTTP requests to interface between the two. If you want encryption, just use HTTPS. If it's just for internal use then you don't need to buy an SSL certificate, you can generate one yourself.

websockets apache server compatibility

I want to make an app that displays new data whenever they arrive inside a folder via xml. I want to use html5 web sockets but I am confused on how it should be done. I am using xaamp on my machine for development. Do I have to install another server to use websockets? Is apache as it is compatible and if yes how do I make the connection with the client. Thank you in advance..
Your options are:
Use something like mod_websocket, as pointed out by Phillip Kovalev. Or pywebsocket. You could also try PHP WebSocket.
Use a dedicated self-hosted realtime web technology for realtime communication between server and client. If you do this you'll also need to define a way of application to realtime web server communications - normally achieved through message queues.
Use a hosted realtime web solution and offload the realtime push aspect of your application.
There are concerns about using Apache with this type of technology since this technology maintains long-running persistent connections between the server and client and Apache isn't know to be too great at this. So, the best solution may be to:
Go with a 2nd dedicated realtime web server in conjunction with using Apache as your application server
Use a self-hosted realtime web server that has the ability to handle many concurrent connections
Use a hosted service along with your Apache application server.
If you don't expect many concurrent connections or if you are just trying out the technology then it's possible that Apache alone will be all you need.
Look at mod_websocket. It supports latest and commonly implemented by browsers vendors protocol version.

FILESTREAM access via streaming API

On a web server, we plan to pull back a file stored in SQL in a FILESTREAM using the Win32 streaming API. Are there any special ports that must be opened to make this work? Or will the standard 1433 suffice?
From documentation:
Remote file system access to FILESTREAM data is enabled over the Server Message Block (SMB) protocol.
If you want to use the streaming API, you'll need to open SMB access to your web server from the outside: probably not a best idea if the web server is public.

How to query MySQL DB from client in a secure manner

I'm doing a personal number-crunching project, and I'd like to launch multiple programs on multiple computers (maybe even on Amazon's servers someday), and have them all storing and sharing data in a common SQL database, located on my web hosting account.
The hosting company won't allow foreign connections directly to the SQL server, but I was thinking about writing a thin PHP script that would reside on the server and receive SQL commands from the remote programs using HTML POST commands, and pass back results as html. Then I could just use an HTTP library to pass the SQL commands straight into the remote server and get back results.
Obviously its a security issue to send naked SQL commands to a server. I was thinking about using some kind of shared-key encryption to send the post commands, and the results would be fine coming back unencrypted.
So, my question is, what am I not thinking about? I'm not an expert on web security, and I'm obviously missing something. Is there some major security hole here that's impossible to fill? Or is there some other method or library to do this that I haven't found?
It might be better storing the SQL as stored procedures on the database and call these SP from your script. This way you don't have to send any plain SQL (just parameters) and it will be easier to maintain.
What you mean with client? As client from a web application (JavaScript), you may perform it by making an Ajax call and return the data as Json.
If you mean a windows client, it's more interesting to create a WebService instead of just a php page and use that in your application.
As for encryption, I think going over an SSL is more or less the best/only way to ensure full security.
If your hosting company allows SSH, tunnel through an SSH session to your MySQL server with your mysql client.
To reduce the volume of what you send for each query, as the previous answer suggests, create stored procedures for those queries and invoke only them with appropriate parameters.