Are you talking about a completely separate "reverse" proxy server on our firewall?
I got the proxy to work in the zimlet tab but it only works on the initial page. It doesn't rewrite the links correctly so the app doesn't appear to function.
For example (trying to make a Hesk help desk accessible to staff when outside the LAN):
Internal ONLY address to Hesk is
Code:
http://hesk.myinternaldomain.com/
The proxy URL in the
js file is
Code:
https://mydomain.com/service/proxy?target=http://hesk.myinternaldomain.com/
Initial page does show up in the tab but it's not formatted correctly so css files aren't making it through the proxy. "Submit a ticket" link should be
Code:
http://hesk.coosbay.cardinal-services.com/index.php?a=add
when NOT through a proxy so the proxy address should be
Code:
https://mydomain.com/service/proxy?target=http://hesk.coosbay.cardinal-services.com/index.php?a=add
but it's showing up as
Code:
https://zimbra.cardinal-services.com/service/index.php?a=add
Mixing and matching URL parts.
Sorry I'm a newbie to zimlet writing so I'm mostly copying samples zimlets and altering at this point. Can this be done through a zimlet tab? I'm happy to do the reading and figure this out if you could point me at a zimlet page page with instructions and/or samples that would be great. Here is the
js from the zimlet tab sample with my alterations of the com name and source URL.
Code:
/*
* ***** BEGIN LICENSE BLOCK *****
* Zimbra Collaboration Suite Zimlets
* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Zimbra, Inc.
*
* The contents of this file are subject to the Zimbra Public License
* Version 1.3 ("License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.zimbra.com/license.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
* ***** END LICENSE BLOCK *****
*/
/**
* Defines the Zimlet handler class.
*
*/
function com_zimbra_heskbeta_HandlerObject() {
}
/**
* Makes the Zimlet class a subclass of ZmZimletBase.
*
*/
com_zimbra_heskbeta_HandlerObject.prototype = new ZmZimletBase();
com_zimbra_heskbeta_HandlerObject.prototype.constructor = com_zimbra_heskbeta_HandlerObject;
/**
* This method gets called by the Zimlet framework when the zimlet loads.
*
*/
com_zimbra_heskbeta_HandlerObject.prototype.init =
function() {
this._simpleAppName = this.createApp("HelpDeskBETA", "HeskIcon", "HelpDeskBETA");
};
/**
* This method gets called by the Zimlet framework each time the application is opened or closed.
*
* @param {String} appName the application name
* @param {Boolean} active if true, the application status is open; otherwise, false
*/
com_zimbra_heskbeta_HandlerObject.prototype.appActive =
function(appName, active) {
switch (appName) {
case this._simpleAppName: {
var app = appCtxt.getApp(appName); // get access to ZmZimletApp
break;
}
}
// do something
};
/**
* This method gets called by the Zimlet framework when the application is opened for the first time.
*
* @param {String} appName the application name
*/
com_zimbra_heskbeta_HandlerObject.prototype.appLaunch =
function(appName) {
switch (appName) {
case this._simpleAppName: {
// do something
var app = appCtxt.getApp(appName); // get access to ZmZimletApp
app.setContent("<iframe id=\"tabiframe-app\" name=\"tabiframe-app\" src=\"https://zimbra.mydomain.com/service/proxy?target=http://hesk.mydomain.com\" width=\"100%\" height=\"100%\" /></iframe>"); // write HTML to app
break;
}
}
}; Thx for the help
Rois Cannon