FranGarcia.me (Posts about remote-viewer)https://www.frangarcia.me/categories/remote-viewer.atom2023-07-01T22:22:36ZFran GarciaNikolaInjecting proxy configuration into remote-viewer (RHEV/oVirt console)https://www.frangarcia.me/posts/injecting-proxy-configuration-into-remote-viewer-rhevovirt-console/2017-06-06T15:09:01+02:002017-06-06T15:09:01+02:00Fran Garcia<p>One of the things that bother me is that I have not been able to find an easy
way to change proxy settings when using the <code>remote-viewer</code> tool to connect
to RHEV/oVirt virtual machines.</p>
<p>Finally I managed to put some thought into how to handle this situation -- and
the easiest way I found is just to puto a wrapper into <code>remote-viewer</code> so whenver
it's invoked via the browser, it can do all required mangling of the <code>*.vv</code> file
we just downloaded.</p>
<p>The virt-viwer <code>*.vv</code> files are just INI files so updating them is usually
quite easy via :</p>
<ul>
<li><a href="http://docs.ansible.com/ansible/ini_file_module.html">Ansible ini_file module</a></li>
<li><a href="https://github.com/pixelb/crudini">Crudini</a></li>
</ul>
<p>All in all, my wrapper looks like this :</p>
<div class="code"><pre class="code literal-block"><span class="ch">#!/bin/bash</span>
<span class="c1"># Wrapper around remote-viewer to inject proxy parameters.</span>
<span class="c1"># Needs ansible, but can be trivially amended to use crudini.</span>
<span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:/usr/bin:/usr/sbin
<span class="nv">path</span><span class="o">=</span><span class="nv">$1</span>
chmod<span class="w"> </span><span class="m">600</span><span class="w"> </span><span class="nv">$path</span>
logger<span class="w"> </span><span class="nv">$0</span><span class="w"> </span><span class="nv">$path</span>
<span class="c1"># Add your magic about detecting whether we need to use a proxy in the 'if' below ;-)</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="k">$(</span>netstat<span class="w"> </span>-putan<span class="w"> </span><span class="m">2</span>><span class="w"> </span>/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-P<span class="w"> </span><span class="s1">':3128.*LISTEN'</span><span class="w"> </span>-c<span class="k">)</span><span class="w"> </span>-ne<span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span>logger<span class="w"> </span><span class="nv">$0</span><span class="w"> </span>enabling<span class="w"> </span>proxy
<span class="w"> </span>ansible<span class="w"> </span>-m<span class="w"> </span>ini_file<span class="w"> </span>localhost<span class="w"> </span>-a<span class="w"> </span><span class="s2">"state=present section=virt-viewer option=proxy value=\"http://localhost:3128\" path=\"</span><span class="nv">$path</span><span class="s2">\""</span>
<span class="w"> </span>ansible<span class="w"> </span>-m<span class="w"> </span>ini_file<span class="w"> </span>localhost<span class="w"> </span>-a<span class="w"> </span><span class="s2">"state=present section=ovirt option=proxy value=\"http://localhost:3128\" path=\"</span><span class="nv">$path</span><span class="s2">\""</span>
<span class="w"> </span>sed<span class="w"> </span>-i<span class="w"> </span><span class="s1">'s# = #=#g'</span><span class="w"> </span><span class="nv">$path</span>
<span class="k">fi</span>
<span class="c1">#logger < $path</span>
/usr/bin/remote-viewer<span class="w"> </span><span class="nv">$path</span>
<span class="nb">exit</span><span class="w"> </span><span class="nv">$?</span>
</pre></div>
<p>And then you just need to instruct your browser to launch <code>remote-viewer.sh</code> rather
than <code>remote-viewer</code> to have your proxy settings automatically added.</p>
<p>Happy hacking!</p>