<html><body>
<p><font size="2" face="sans-serif">We can get permission ot submit patches back against another project (spice - which we may have via some other permissions) and then use that library...</font><br>
<font size="2" face="sans-serif"><br>
<br>
Cheers,<br>
Frank &nbsp;<br>
<br>
-----------------------------------------------------------------------------------------------------------------------<br>
Frank Novak &nbsp;( Åµ·« nu¨°¡¢f¨¡n )<br>
STSM, SCEM Open Hypervisor<br>
IBM Linux Technology Center<br>
US: &nbsp;fnovak@us.ibm.com &nbsp;; &nbsp;Notes: &nbsp; Frank Novak/Watson/IBM @IBMUS<br>
cell : 919-671-7966<br>
-------------------------------------------------------------------------------------------------------------------------</font><br>
<br>
<img width="16" height="16" src="cid:1__=0ABBF7B9DFF1F4A88f9e8a93df938@us.ibm.com" border="0" alt="Inactive hide details for Aline Manera ---08/04/2014 01:35:03 PM---I think we will have license issues with this patch set: htt"><font size="2" color="#424282" face="sans-serif">Aline Manera ---08/04/2014 01:35:03 PM---I think we will have license issues with this patch set: <a href="http://stackoverflow.com/questions/1174240/">http://stackoverflow.com/questions/1174240/</a></font><br>
<br>
<font size="1" color="#5F5F5F" face="sans-serif">From:        </font><font size="1" face="sans-serif">Aline Manera &lt;alinefm@linux.vnet.ibm.com&gt;</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">To:        </font><font size="1" face="sans-serif">shaohef@linux.vnet.ibm.com, kimchi-devel@ovirt.org, Frank Novak/Watson/IBM@IBMUS, Leonardo Garcia &lt;lagarcia@br.ibm.com&gt;</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Date:        </font><font size="1" face="sans-serif">08/04/2014 01:35 PM</font><br>
<font size="1" color="#5F5F5F" face="sans-serif">Subject:        </font><font size="1" face="sans-serif">Re: [Kimchi-devel] [PATCH] set the password for spice and VNC page.</font><br>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<br>
<tt><font size="2"><br>
I think we will have license issues with this patch set:<br>
<br>
</font></tt><tt><font size="2"><a href="http://stackoverflow.com/questions/1174240/apache-and-lgpl-license-compatibility">http://stackoverflow.com/questions/1174240/apache-and-lgpl-license-compatibility</a></font></tt><tt><font size="2">&nbsp;<br>
<br>
<br>
Here you are modifying files imported from noVNC and Spice communities.<br>
noVNC is under MPL 2.0 and Spice under LGPLv3 and everything under ui/ <br>
is Apache 2.0 according to Kimchi.<br>
<br>
 From the link above, we can only USE imported LGPLv3 code with Apache <br>
license, ie, we can not modify them otherwise we need to re-license the <br>
project under LGPLv3<br>
<br>
On 08/04/2014 11:48 AM, shaohef@linux.vnet.ibm.com wrote:<br>
&gt; From: ShaoHe Feng &lt;shaohef@linux.vnet.ibm.com&gt;<br>
&gt;<br>
&gt; set a cookie to store the ticket before connect a VM.<br>
&gt; get the password from cookie and pass it to spice and VNC server.<br>
&gt;<br>
&gt; Signed-off-by: ShaoHe Feng &lt;shaohef@linux.vnet.ibm.com&gt;<br>
&gt; ---<br>
&gt; &nbsp; ui/js/novnc/main.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 10 +++++++++-<br>
&gt; &nbsp; ui/js/src/kimchi.guest_main.js | 22 ++++++++++++++++------<br>
&gt; &nbsp; ui/pages/spice.html.tmpl &nbsp; &nbsp; &nbsp; | 10 +++++++++-<br>
&gt; &nbsp; 3 files changed, 34 insertions(+), 8 deletions(-)<br>
&gt;<br>
&gt; diff --git a/ui/js/novnc/main.js b/ui/js/novnc/main.js<br>
&gt; index 22037ec..84a813b 100644<br>
&gt; --- a/ui/js/novnc/main.js<br>
&gt; +++ b/ui/js/novnc/main.js<br>
&gt; @@ -79,7 +79,15 @@ if (token) {<br>
&gt; &nbsp; &nbsp; &nbsp; WebUtil.createCookie('token', token, 1)<br>
&gt; &nbsp; }<br>
&gt;<br>
&gt; -password = WebUtil.getQueryVar('password', '');<br>
&gt; +// password = WebUtil.getQueryVar('password', '');<br>
&gt; +var cookieRe = new RegExp(';?\\\s*(ticketVM)=(\s*[^;]*);?', 'g');<br>
&gt; +var match = cookieRe.exec(document.cookie);<br>
&gt; +var password = match ? decodeURIComponent(match[2]) : '';<br>
&gt; +if (match) {<br>
&gt; + &nbsp; &nbsp;var utcString = new Date().toUTCString();<br>
&gt; + &nbsp; &nbsp;document.cookie = 'ticketVM' + '=; expires=' + utcString;<br>
&gt; +}<br>
&gt; +<br>
&gt; &nbsp; path = WebUtil.getQueryVar('path', 'websockify');<br>
&gt;<br>
&gt; &nbsp; if ((!host) || (!port)) {<br>
&gt; diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js<br>
&gt; index ff6f2e1..1c1428f 100644<br>
&gt; --- a/ui/js/src/kimchi.guest_main.js<br>
&gt; +++ b/ui/js/src/kimchi.guest_main.js<br>
&gt; @@ -150,12 +150,22 @@ kimchi.vmedit = function(event) {<br>
&gt; &nbsp; kimchi.openVmConsole = function(event) {<br>
&gt; &nbsp; &nbsp; &nbsp; var vm=$(this).closest('li[name=guest]');<br>
&gt; &nbsp; &nbsp; &nbsp; var vmObject=vm.data();<br>
&gt; - &nbsp; &nbsp;if (vmObject.graphics['type'] == 'vnc') {<br>
&gt; - &nbsp; &nbsp; &nbsp; &nbsp;kimchi.vncToVM(vm.attr('id'));<br>
&gt; - &nbsp; &nbsp;}<br>
&gt; - &nbsp; &nbsp;else if (vmObject.graphics['type'] == 'spice') {<br>
&gt; - &nbsp; &nbsp; &nbsp; &nbsp;kimchi.spiceToVM(vm.attr('id'));<br>
&gt; - &nbsp; &nbsp;}<br>
&gt; + &nbsp; &nbsp;kimchi.retrieveVM(vm.attr('id'), function(result) {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (result.ticket.expire &nbsp;&amp;&amp; result.ticket.expire &lt; 0) {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kimchi.message.error('please reset your password!');<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result.ticket.passwd != null &amp;&amp; kimchi.cookie.set(&quot;ticketVM&quot;, result.ticket.passwd, 100);<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (vmObject.graphics['type'] == 'vnc') {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kimchi.vncToVM(vm.attr('id'));<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (vmObject.graphics['type'] == 'spice') {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kimchi.spiceToVM(vm.attr('id'));<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp;}, function(err) {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kimchi.message.error(err.responseJSON.reason);<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt; + &nbsp; &nbsp;);<br>
&gt;<br>
&gt; &nbsp; };<br>
&gt;<br>
&gt; diff --git a/ui/pages/spice.html.tmpl b/ui/pages/spice.html.tmpl<br>
&gt; index 213d216..cb7c331 100644<br>
&gt; --- a/ui/pages/spice.html.tmpl<br>
&gt; +++ b/ui/pages/spice.html.tmpl<br>
&gt; @@ -64,6 +64,14 @@<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; host = getParameter(&quot;listen&quot;);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; port = getParameter(&quot;port&quot;);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; token = getParameter(&quot;token&quot;);<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var cookieRe = new RegExp(';?\\\s*(ticketVM)=(\s*[^;]*);?', 'g');<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var match = cookieRe.exec(document.cookie);<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;password = match ? decodeURIComponent(match[2]) : '';<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (match) {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var utcString = new Date().toUTCString();<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.cookie = 'ticketVM' + '=; expires=' + utcString;<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt; +<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById(&quot;host&quot;).value = host;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById(&quot;port&quot;).value = port;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ((!host) || (!port)) {<br>
&gt; @@ -82,7 +90,7 @@<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; screen_id : &quot;spice-screen&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dump_id : &quot;debug-div&quot;,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message_id : &quot;message-div&quot;,<br>
&gt; - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;password : &quot;&quot;,<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;password : password,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onerror : spice_error<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (e) {<br>
<br>
</font></tt><br>
</body></html>