mirror of
https://github.com/davegallant/davegallant.github.io.git
synced 2025-08-05 08:13:40 +00:00
469 lines
24 KiB
HTML
469 lines
24 KiB
HTML
<!DOCTYPE html>
|
|
<html lang='en' dir='auto'><head>
|
|
<meta charset='utf-8'>
|
|
<meta name='viewport' content='width=device-width, initial-scale=1'>
|
|
<meta name='description' content='AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP 4.3.2 working on Arch Linux.'>
|
|
<meta name='theme-color' content='#8979b3'>
|
|
|
|
<meta property='og:title' content='AppGate SDP on Arch Linux • davegallant'>
|
|
<meta property='og:description' content='AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP 4.3.2 working on Arch Linux.'>
|
|
<meta property='og:url' content='/blog/2020/03/16/appgate-sdp-on-arch-linux/'>
|
|
<meta property='og:site_name' content='davegallant'>
|
|
<meta property='og:type' content='article'><meta property='article:section' content='post'><meta property='article:tag' content='linux'><meta property='article:tag' content='vpn'><meta property='article:tag' content='python'><meta property='article:published_time' content='2020-03-16T22:00:15-04:00'/><meta property='article:modified_time' content='2020-03-16T22:00:15-04:00'/><meta name='twitter:card' content='summary'>
|
|
|
|
<meta name="generator" content="Hugo 0.92.2" />
|
|
|
|
<title>AppGate SDP on Arch Linux • davegallant</title>
|
|
<link rel='canonical' href='/blog/2020/03/16/appgate-sdp-on-arch-linux/'>
|
|
|
|
|
|
<link rel='icon' href='/favicon.ico'>
|
|
<link rel='stylesheet' href='/assets/css/main.ab98e12b.css'><link rel='stylesheet' href='/css/custom.css'><style>
|
|
:root{--color-accent:#8979b3;}
|
|
</style>
|
|
|
|
<script type="application/javascript">
|
|
var doNotTrack = false;
|
|
if (!doNotTrack) {
|
|
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
|
ga('create', 'UA-98710982-2', 'auto');
|
|
|
|
ga('send', 'pageview');
|
|
}
|
|
</script>
|
|
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
|
|
|
|
|
|
|
</head>
|
|
<body class='page type-post has-sidebar'>
|
|
|
|
<div class='site'><div id='sidebar' class='sidebar'>
|
|
<a class='screen-reader-text' href='#main-menu'>Skip to Main Menu</a>
|
|
|
|
<div class='container'><section class='widget widget-about sep-after'>
|
|
<header>
|
|
|
|
<div class='logo'>
|
|
<a href='/'>
|
|
<img src='/images/logo.png'>
|
|
</a>
|
|
</div>
|
|
|
|
<h2 class='title site-title '>
|
|
<a href='/'>
|
|
davegallant
|
|
</a>
|
|
</h2>
|
|
<div class='desc'>
|
|
personal blog
|
|
</div>
|
|
</header>
|
|
|
|
</section>
|
|
<section class='widget widget-taxonomy_cloud sep-after'>
|
|
<header>
|
|
<h4 class='title widget-title'>Tags</h4>
|
|
</header>
|
|
|
|
<div class='container list-container'>
|
|
<ul class='list taxonomy-cloud'><li>
|
|
<a href='/tags/adguard/' style='font-size:1em'>adguard</a>
|
|
</li><li>
|
|
<a href='/tags/aws/' style='font-size:1em'>aws</a>
|
|
</li><li>
|
|
<a href='/tags/aws-vault/' style='font-size:1em'>aws-vault</a>
|
|
</li><li>
|
|
<a href='/tags/backup/' style='font-size:1em'>backup</a>
|
|
</li><li>
|
|
<a href='/tags/containers/' style='font-size:1em'>containers</a>
|
|
</li><li>
|
|
<a href='/tags/degoogle/' style='font-size:1em'>degoogle</a>
|
|
</li><li>
|
|
<a href='/tags/docker/' style='font-size:1em'>docker</a>
|
|
</li><li>
|
|
<a href='/tags/dotfiles/' style='font-size:1em'>dotfiles</a>
|
|
</li><li>
|
|
<a href='/tags/gmail/' style='font-size:1em'>gmail</a>
|
|
</li><li>
|
|
<a href='/tags/grafana/' style='font-size:1em'>grafana</a>
|
|
</li><li>
|
|
<a href='/tags/home-manager/' style='font-size:1em'>home-manager</a>
|
|
</li><li>
|
|
<a href='/tags/homelab/' style='font-size:1em'>homelab</a>
|
|
</li><li>
|
|
<a href='/tags/jellyfin/' style='font-size:1em'>jellyfin</a>
|
|
</li><li>
|
|
<a href='/tags/k3s/' style='font-size:1em'>k3s</a>
|
|
</li><li>
|
|
<a href='/tags/linux/' style='font-size:1em'>linux</a>
|
|
</li><li>
|
|
<a href='/tags/lxc/' style='font-size:1em'>lxc</a>
|
|
</li><li>
|
|
<a href='/tags/netdata/' style='font-size:1em'>netdata</a>
|
|
</li><li>
|
|
<a href='/tags/nix/' style='font-size:1em'>nix</a>
|
|
</li><li>
|
|
<a href='/tags/openwrt/' style='font-size:1em'>openwrt</a>
|
|
</li><li>
|
|
<a href='/tags/pfsense/' style='font-size:1em'>pfsense</a>
|
|
</li><li>
|
|
<a href='/tags/pihole/' style='font-size:1em'>pihole</a>
|
|
</li><li>
|
|
<a href='/tags/plex/' style='font-size:1em'>plex</a>
|
|
</li><li>
|
|
<a href='/tags/podman/' style='font-size:1em'>podman</a>
|
|
</li><li>
|
|
<a href='/tags/proxmox/' style='font-size:2em'>proxmox</a>
|
|
</li><li>
|
|
<a href='/tags/python/' style='font-size:2em'>python</a>
|
|
</li><li>
|
|
<a href='/tags/ransomware/' style='font-size:1em'>ransomware</a>
|
|
</li><li>
|
|
<a href='/tags/router/' style='font-size:1em'>router</a>
|
|
</li><li>
|
|
<a href='/tags/router-on-a-stick/' style='font-size:1em'>router-on-a-stick</a>
|
|
</li><li>
|
|
<a href='/tags/security/' style='font-size:1em'>security</a>
|
|
</li><li>
|
|
<a href='/tags/synology/' style='font-size:1em'>synology</a>
|
|
</li><li>
|
|
<a href='/tags/tailscale/' style='font-size:1em'>tailscale</a>
|
|
</li><li>
|
|
<a href='/tags/virtualization/' style='font-size:1em'>virtualization</a>
|
|
</li><li>
|
|
<a href='/tags/vlan/' style='font-size:1em'>vlan</a>
|
|
</li><li>
|
|
<a href='/tags/vpn/' style='font-size:1em'>vpn</a>
|
|
</li></ul>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section class='widget widget-social_menu sep-after'><nav aria-label='Social Menu'>
|
|
<ul><li>
|
|
<a href='https://github.com/davegallant' target='_blank' rel='noopener me'>
|
|
<span class='screen-reader-text'>Open Github account in new tab</span><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22" />
|
|
</svg>
|
|
</a>
|
|
</li><li>
|
|
<a href='https://twitter.com/dave_gallant_' target='_blank' rel='noopener me'>
|
|
<span class='screen-reader-text'>Open Twitter account in new tab</span><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z" />
|
|
</svg>
|
|
</a>
|
|
</li><li>
|
|
<a href='mailto:davegallant@gmail.com' target='_blank' rel='noopener me'>
|
|
<span class='screen-reader-text'>Contact via Email</span><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" />
|
|
<polyline points="22,6 12,13 2,6" />
|
|
</svg>
|
|
</a>
|
|
</li><li>
|
|
<a href='https://linkedin.com/in/dave-gallant' target='_blank' rel='noopener me'>
|
|
<span class='screen-reader-text'>Open Linkedin account in new tab</span><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" />
|
|
<rect x="2" y="9" width="4" height="12" />
|
|
<circle cx="4" cy="4" r="2" />
|
|
</svg>
|
|
</a>
|
|
</li></ul>
|
|
</nav>
|
|
</section></div>
|
|
|
|
<div class='sidebar-overlay'></div>
|
|
</div><div class='main'><nav id='main-menu' class='menu main-menu' aria-label='Main Menu'>
|
|
<div class='container'>
|
|
<a class='screen-reader-text' href='#content'>Skip to Content</a>
|
|
|
|
<button id='sidebar-toggler' class='sidebar-toggler' aria-controls='sidebar'>
|
|
<span class='screen-reader-text'>Toggle Sidebar</span>
|
|
<span class='open'><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><line x1="3" y1="12" x2="21" y2="12" />
|
|
<line x1="3" y1="6" x2="21" y2="6" />
|
|
<line x1="3" y1="18" x2="21" y2="18" />
|
|
</svg>
|
|
</span>
|
|
<span class='close'><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><line x1="18" y1="6" x2="6" y2="18" />
|
|
<line x1="6" y1="6" x2="18" y2="18" />
|
|
</svg>
|
|
</span>
|
|
</button>
|
|
<ul><li class='item'>
|
|
<a href='/'>Home</a>
|
|
</li><li class='item'>
|
|
<a href='/about/'>About</a>
|
|
</li><li class='item'>
|
|
<a href='/index.xml'>RSS</a>
|
|
</li></ul>
|
|
</div>
|
|
</nav><div class='header-widgets'>
|
|
<div class='container'></div>
|
|
</div>
|
|
|
|
<header id='header' class='header site-header'>
|
|
<div class='container sep-after'>
|
|
</div>
|
|
</header>
|
|
|
|
<main id='content'>
|
|
|
|
|
|
<article lang='en' class='entry'>
|
|
<header class='header entry-header'>
|
|
<div class='container sep-after'>
|
|
<div class='header-info'>
|
|
<h1 class='title'>AppGate SDP on Arch Linux</h1>
|
|
|
|
|
|
</div>
|
|
<div class='entry-meta'>
|
|
<span class='posted-on'><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><rect x="3" y="4" width="18" height="18" rx="2" ry="2" />
|
|
<line x1="16" y1="2" x2="16" y2="6" />
|
|
<line x1="8" y1="2" x2="8" y2="6" />
|
|
<line x1="3" y1="10" x2="21" y2="10" />
|
|
</svg>
|
|
<span class='screen-reader-text'>Posted on </span>
|
|
<time class='entry-date' datetime='2020-03-16T22:00:15-04:00'>2020, Mar 16</time>
|
|
</span>
|
|
|
|
|
|
|
|
<span class='reading-time'><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><circle cx="12" cy="12" r="10" />
|
|
<polyline points="12 6 12 12 15 15" />
|
|
</svg>
|
|
3 mins read
|
|
</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<div class='container entry-content'>
|
|
<p>AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP <code>4.3.2</code> working on Arch Linux.</p>
|
|
<p>Depending on the AppGate SDP Server that is running, you may require a client that is more recent than the latest package on <a href="https://aur.archlinux.org/packages/appgate-sdp/">AUR</a>.
|
|
As of right now, the latest AUR is <code>4.2.2-1</code>.</p>
|
|
<p>These steps highlight how to get it working with <code>Python3.8</code> by making a 1 line modification to AppGate source code.</p>
|
|
<h1 id="packaging">Packaging</h1>
|
|
<p>We already know the community package is currently out of date, so let’s clone it:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git clone https://aur.archlinux.org/appgate-sdp.git
|
|
<span style="color:#366">cd</span> appgate-sdp
|
|
</code></pre></div><p>You’ll likely notice that the version is not what we want, so let’s modify the <code>PKGBUILD</code> to the following:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#09f;font-style:italic"># Maintainer: Pawel Mosakowski <pawel at mosakowski dot net></span>
|
|
<span style="color:#033">pkgname</span><span style="color:#555">=</span>appgate-sdp
|
|
<span style="color:#033">conflicts</span><span style="color:#555">=(</span><span style="color:#c30">'appgate-sdp-headless'</span><span style="color:#555">)</span>
|
|
<span style="color:#033">pkgver</span><span style="color:#555">=</span>4.3.2
|
|
<span style="color:#033">_download_pkgver</span><span style="color:#555">=</span>4.3
|
|
<span style="color:#033">pkgrel</span><span style="color:#555">=</span><span style="color:#f60">1</span>
|
|
<span style="color:#033">epoch</span><span style="color:#555">=</span>
|
|
<span style="color:#033">pkgdesc</span><span style="color:#555">=</span><span style="color:#c30">"Software Defined Perimeter - GUI client"</span>
|
|
<span style="color:#033">arch</span><span style="color:#555">=(</span><span style="color:#c30">'x86_64'</span><span style="color:#555">)</span>
|
|
<span style="color:#033">url</span><span style="color:#555">=</span><span style="color:#c30">"https://www.cyxtera.com/essential-defense/appgate-sdp/support"</span>
|
|
<span style="color:#033">license</span><span style="color:#555">=(</span><span style="color:#c30">'custom'</span><span style="color:#555">)</span>
|
|
<span style="color:#09f;font-style:italic"># dependecies calculated by namcap</span>
|
|
<span style="color:#033">depends</span><span style="color:#555">=(</span><span style="color:#c30">'gconf'</span> <span style="color:#c30">'libsecret'</span> <span style="color:#c30">'gtk3'</span> <span style="color:#c30">'python'</span> <span style="color:#c30">'nss'</span> <span style="color:#c30">'libxss'</span> <span style="color:#c30">'nodejs'</span> <span style="color:#c30">'dnsmasq'</span><span style="color:#555">)</span>
|
|
<span style="color:#033">source</span><span style="color:#555">=(</span><span style="color:#c30">"https://sdpdownloads.cyxtera.com/AppGate-SDP-</span><span style="color:#a00">${</span><span style="color:#033">_download_pkgver</span><span style="color:#a00">}</span><span style="color:#c30">/clients/</span><span style="color:#a00">${</span><span style="color:#033">pkgname</span><span style="color:#a00">}</span><span style="color:#c30">_</span><span style="color:#a00">${</span><span style="color:#033">pkgver</span><span style="color:#a00">}</span><span style="color:#c30">_amd64.deb"</span>
|
|
<span style="color:#c30">"appgatedriver.service"</span><span style="color:#555">)</span>
|
|
<span style="color:#033">options</span><span style="color:#555">=(</span>staticlibs<span style="color:#555">)</span>
|
|
prepare<span style="color:#555">()</span> <span style="color:#555">{</span>
|
|
tar -xf data.tar.xz
|
|
<span style="color:#555">}</span>
|
|
package<span style="color:#555">()</span> <span style="color:#555">{</span>
|
|
cp -dpr <span style="color:#c30">"</span><span style="color:#a00">${</span><span style="color:#033">srcdir</span><span style="color:#a00">}</span><span style="color:#c30">"</span>/<span style="color:#555">{</span>etc,lib,opt,usr<span style="color:#555">}</span> <span style="color:#c30">"</span><span style="color:#a00">${</span><span style="color:#033">pkgdir</span><span style="color:#a00">}</span><span style="color:#c30">"</span>
|
|
mv -v <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/lib/systemd/system"</span> <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/lib/systemd/"</span>
|
|
rm -vrf <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/lib"</span>
|
|
cp -v <span style="color:#c30">"</span><span style="color:#033">$srcdir</span><span style="color:#c30">/appgatedriver.service"</span> <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/lib/systemd/system/appgatedriver.service"</span>
|
|
mkdir -vp <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/licenses/appgate-sdp"</span>
|
|
cp -v <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/doc/appgate/copyright"</span> <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/licenses/appgate-sdp"</span>
|
|
cp -v <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/doc/appgate/LICENSE.github"</span> <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/licenses/appgate-sdp"</span>
|
|
cp -v <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/doc/appgate/LICENSES.chromium.html.bz2"</span> <span style="color:#c30">"</span><span style="color:#033">$pkgdir</span><span style="color:#c30">/usr/share/licenses/appgate-sdp"</span>
|
|
<span style="color:#555">}</span>
|
|
<span style="color:#033">md5sums</span><span style="color:#555">=(</span><span style="color:#c30">'17101aac7623c06d5fbb95f50cf3dbdc'</span>
|
|
<span style="color:#c30">'002644116e20b2d79fdb36b7677ab4cf'</span><span style="color:#555">)</span>
|
|
|
|
</code></pre></div><p>Let’s first make sure we have some dependencies. If you do not have <a href="https://github.com/Jguer/yay">yay</a>, check it out.</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">yay -S dnsmasq gconf
|
|
</code></pre></div><p>Now, let’s install it:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">makepkg -si
|
|
</code></pre></div><h1 id="running-the-client">Running the client</h1>
|
|
<p>Ok, let’s run the client by executing <code>appgate</code>.</p>
|
|
<p>It complains about not being able to connect.</p>
|
|
<p>Easy fix:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">sudo systemctl start appgatedriver.service
|
|
</code></pre></div><p>Now we should be connected… but DNS is not working?</p>
|
|
<h1 id="fixing-the-dns">Fixing the DNS</h1>
|
|
<p>Running <code>resolvectl</code> should display that something is not right.</p>
|
|
<p>Why is the DNS not being set by appgate?</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ head -3 /opt/appgate/linux/set_dns
|
|
<span style="color:#09f;font-style:italic">#!/usr/bin/env python3</span>
|
|
<span style="color:#c30">''</span><span style="color:#a00;background-color:#faa">'</span>
|
|
This is used to <span style="color:#366">set</span> and <span style="color:#366">unset</span> the DNS.
|
|
</code></pre></div><p>It seems like python3 is required for the DNS setting to happen.
|
|
Let’s try to run it.</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ sudo /opt/appgate/linux/set_dns
|
|
/opt/appgate/linux/set_dns:88: SyntaxWarning: <span style="color:#c30">"is"</span> with a literal. Did you mean <span style="color:#c30">"=="</span>?
|
|
<span style="color:#033">servers</span> <span style="color:#555">=</span> <span style="color:#555">[(</span> socket.AF_INET <span style="color:#069;font-weight:bold">if</span> x.version is <span style="color:#f60">4</span> <span style="color:#069;font-weight:bold">else</span> socket.AF_INET6, map<span style="color:#555">(</span>int, x.packed<span style="color:#555">))</span> <span style="color:#069;font-weight:bold">for</span> x in servers<span style="color:#555">]</span>
|
|
Traceback <span style="color:#555">(</span>most recent call last<span style="color:#555">)</span>:
|
|
File <span style="color:#c30">"/opt/appgate/linux/set_dns"</span>, line 30, in <module>
|
|
import dbus
|
|
ModuleNotFoundError: No module named <span style="color:#c30">'dbus'</span>
|
|
</code></pre></div><p>Ok, let’s install it:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ sudo python3.8 -m pip install dbus-python
|
|
</code></pre></div><p>Will it work now? Not yet. There’s another issue:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ sudo /opt/appgate/linux/set_dns
|
|
/opt/appgate/linux/set_dns:88: SyntaxWarning: <span style="color:#c30">"is"</span> with a literal. Did you mean <span style="color:#c30">"=="</span>?
|
|
<span style="color:#033">servers</span> <span style="color:#555">=</span> <span style="color:#555">[(</span> socket.AF_INET <span style="color:#069;font-weight:bold">if</span> x.version is <span style="color:#f60">4</span> <span style="color:#069;font-weight:bold">else</span> socket.AF_INET6, map<span style="color:#555">(</span>int, x.packed<span style="color:#555">))</span> <span style="color:#069;font-weight:bold">for</span> x in servers<span style="color:#555">]</span>
|
|
module <span style="color:#c30">'platform'</span> has no attribute <span style="color:#c30">'linux_distribution'</span>
|
|
</code></pre></div><p>This is a breaking change in Python3.8.</p>
|
|
<p>So what is calling <code>platform.linux_distribution</code>?</p>
|
|
<p>Let’s search for it:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ sudo grep -r <span style="color:#c30">'linux_distribution'</span> /opt/appgate/linux/
|
|
/opt/appgate/linux/nm.py: <span style="color:#069;font-weight:bold">if</span> platform.linux_distribution<span style="color:#555">()[</span>0<span style="color:#555">]</span> !<span style="color:#555">=</span> <span style="color:#c30">'Fedora'</span>:
|
|
</code></pre></div><p>Aha! So this is in the local AppGate source code. This should be an easy fix. Let’s just replace this line with:</p>
|
|
<div class="highlight"><pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-python" data-lang="python"><span style="color:#069;font-weight:bold">if</span> <span style="color:#069;font-weight:bold">True</span>: <span style="color:#09f;font-style:italic"># Since we are not using Fedora :)</span>
|
|
</code></pre></div><h1 id="wrapping-up">Wrapping up</h1>
|
|
<p>It turns out there are <a href="https://docs.python.org/3.7/library/platform.html#platform.linux_distribution">breaking changes</a> in Python3.8.</p>
|
|
<p>The docs say <code>Deprecated since version 3.5, will be removed in version 3.8: See alternative like the distro package.</code></p>
|
|
<p>I suppose this highlights one of the caveats of relying upon the system’s python, rather than having an isolated, dedicated environment for all dependencies.</p>
|
|
</div>
|
|
|
|
|
|
<footer class='entry-footer'>
|
|
<div class='container sep-before'><div class='tags'><svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><path d="M20.59,13.41l-7.17,7.17a2,2,0,0,1-2.83,0L2,12V2H12l8.59,8.59A2,2,0,0,1,20.59,13.41Z" />
|
|
<line x1="7" y1="7" x2="7" y2="7" />
|
|
</svg>
|
|
<span class='screen-reader-text'>Tags: </span><a class='tag' href='/tags/linux/'>linux</a>, <a class='tag' href='/tags/vpn/'>vpn</a>, <a class='tag' href='/tags/python/'>python</a></div>
|
|
|
|
</div>
|
|
</footer>
|
|
|
|
|
|
</article>
|
|
|
|
<nav class='entry-nav'>
|
|
<div class='container'><div class='next-entry sep-before'>
|
|
<a href='/blog/2021/09/06/what-to-do-with-a-homelab/'>
|
|
<span class='screen-reader-text'>Next post: </span>What To Do With A Homelab<span aria-hidden='true'>Next <svg
|
|
class="icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewbox="0 0 24 24"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
aria-hidden="true"
|
|
><line x1="4" y1="12" x2="20" y2="12" />
|
|
<polyline points="14 6 20 12 14 18" />
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
</div></div>
|
|
</nav>
|
|
|
|
|
|
<section id='comments' class='comments'>
|
|
<div class='container sep-before'>
|
|
<div class='comments-area'><script src='https://utteranc.es/client.js'
|
|
repo='davegallant/davegallant.github.io'
|
|
issue-term='pathname'
|
|
|
|
theme='github-light'
|
|
crossorigin='anonymous' async>
|
|
</script>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
</main>
|
|
|
|
<footer id='footer' class='footer'>
|
|
<div class='container sep-before'><div class='copyright'>
|
|
<p> © 2020-2022 Dave Gallant </p>
|
|
</div>
|
|
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
</div><script>window.__assets_js_src="/assets/js/"</script>
|
|
|
|
<script src='/assets/js/main.c3bcf2df.js'></script>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|