Last-Modified: Sun, 06 Jul 2025 02:08:54 GMT
Expires: Wed, 04 Jul 2035 02:08:54 GMT

<!DOCTYPE html>
<html lang='en'>
<head>
<title>sra/rpki.net - Dragon Research Labs RPKI Toolkit</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://git.hactrn.net/sra/rpki.net/atom/rpki/rtr/generator.py?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://git.hactrn.net/sra/rpki.net' title='sra/rpki.net Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a title='sra/rpki.net' href='/sra/rpki.net/'>sra/rpki.net</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='e81690ea12ad6d9f1485443cb985b76c43696b4d'/><input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='master' selected='selected'>master</option>
<option value='zone-cleanup'>zone-cleanup</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Dragon Research Labs RPKI Toolkit</td><td class='sub right'>git user</td></tr></table>
<table class='tabs'><tr><td>
<a href='/sra/rpki.net/about/'>about</a><a href='/sra/rpki.net/'>summary</a><a href='/sra/rpki.net/refs/?id=e81690ea12ad6d9f1485443cb985b76c43696b4d'>refs</a><a class='active' href='/sra/rpki.net/log/rpki/rtr/generator.py?showmsg=1'>log</a><a href='/sra/rpki.net/tree/rpki/rtr/generator.py?id=e81690ea12ad6d9f1485443cb985b76c43696b4d'>tree</a><a href='/sra/rpki.net/commit/rpki/rtr/generator.py?id=e81690ea12ad6d9f1485443cb985b76c43696b4d'>commit</a><a href='/sra/rpki.net/diff/rpki/rtr/generator.py?id=e81690ea12ad6d9f1485443cb985b76c43696b4d'>diff</a></td><td class='form'><form class='right' method='get' action='/sra/rpki.net/log/rpki/rtr/generator.py'>
<input type='hidden' name='id' value='e81690ea12ad6d9f1485443cb985b76c43696b4d'/><input type='hidden' name='showmsg' value='1'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/sra/rpki.net/log/?id=e81690ea12ad6d9f1485443cb985b76c43696b4d&amp;showmsg=1'>root</a>/<a href='/sra/rpki.net/log/rpki?id=e81690ea12ad6d9f1485443cb985b76c43696b4d&amp;showmsg=1'>rpki</a>/<a href='/sra/rpki.net/log/rpki/rtr?id=e81690ea12ad6d9f1485443cb985b76c43696b4d&amp;showmsg=1'>rtr</a>/<a href='/sra/rpki.net/log/rpki/rtr/generator.py?id=e81690ea12ad6d9f1485443cb985b76c43696b4d&amp;showmsg=1'>generator.py</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/sra/rpki.net/log/rpki/rtr/generator.py?id=e81690ea12ad6d9f1485443cb985b76c43696b4d'>Collapse</a>)</th><th class='left'>Author</th></tr>
<tr class='logheader'><td><span title='2015-11-11 03:22:38 +0000'>2015-11-11</span></td><td class='logsubject'><a href='/sra/rpki.net/commit/rpki/rtr/generator.py?id=9f6d6462a9cef37735a9d4c61921d04934fd9864'>Configure pylint to use the pylint-django plugin, which (mostly)</a></td><td>Rob Austein</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
understands Django's exotic metaclasses, which in turn allows us to
re-enable a number of pylint checks we had disabled.  While we were at
this, stripped out a bunch of old pylint pragmas, then added back the
subset that were really needed.  As usual with pylint, this turned up
a few real bugs along with an awful lot of noise.

svn path=/branches/tk705/; revision=6162


</td></tr>
<tr class='logheader'><td><span title='2015-10-26 06:29:00 +0000'>2015-10-26</span></td><td class='logsubject'><a href='/sra/rpki.net/commit/rpki/rtr/generator.py?id=b46deb1417dc3596e9ac9fe2fe8cc0b7f42457e7'>"Any programmer who fails to comply with the standard naming, formatting,</a></td><td>Rob Austein</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
or commenting conventions should be shot.  If it so happens that it is
inconvenient to shoot him, then he is to be politely requested to recode
his program in adherence to the above standard."
		-- Michael Spier, Digital Equipment Corporation

svn path=/branches/tk705/; revision=6152


</td></tr>
<tr class='logheader'><td><span title='2014-05-01 03:57:32 +0000'>2014-05-01</span></td><td class='logsubject'><a href='/sra/rpki.net/commit/rpki/rtr/generator.py?id=76397759fef6968b41f0c9a8d39578f6d95b32be'>s/rpki.rpki_rtr/rpki.rtr/g</a></td><td>Rob Austein</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
svn path=/trunk/; revision=5819


</td></tr>
</table><ul class='pager'></ul></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2025-07-06 02:08:55 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
<a id='n79' href='#n79'>79</a>
<a id='n80' href='#n80'>80</a>
<a id='n81' href='#n81'>81</a>
<a id='n82' href='#n82'>82</a>
<a id='n83' href='#n83'>83</a>
<a id='n84' href='#n84'>84</a>
<a id='n85' href='#n85'>85</a>
<a id='n86' href='#n86'>86</a>
<a id='n87' href='#n87'>87</a>
<a id='n88' href='#n88'>88</a>
<a id='n89' href='#n89'>89</a>
<a id='n90' href='#n90'>90</a>
<a id='n91' href='#n91'>91</a>
<a id='n92' href='#n92'>92</a>
<a id='n93' href='#n93'>93</a>
<a id='n94' href='#n94'>94</a>
<a id='n95' href='#n95'>95</a>
<a id='n96' href='#n96'>96</a>
<a id='n97' href='#n97'>97</a>
<a id='n98' href='#n98'>98</a>
<a id='n99' href='#n99'>99</a>
<a id='n100' href='#n100'>100</a>
<a id='n101' href='#n101'>101</a>
<a id='n102' href='#n102'>102</a>
<a id='n103' href='#n103'>103</a>
<a id='n104' href='#n104'>104</a>
<a id='n105' href='#n105'>105</a>
<a id='n106' href='#n106'>106</a>
<a id='n107' href='#n107'>107</a>
<a id='n108' href='#n108'>108</a>
<a id='n109' href='#n109'>109</a>
<a id='n110' href='#n110'>110</a>
<a id='n111' href='#n111'>111</a>
<a id='n112' href='#n112'>112</a>
<a id='n113' href='#n113'>113</a>
<a id='n114' href='#n114'>114</a>
<a id='n115' href='#n115'>115</a>
<a id='n116' href='#n116'>116</a>
<a id='n117' href='#n117'>117</a>
<a id='n118' href='#n118'>118</a>
<a id='n119' href='#n119'>119</a>
<a id='n120' href='#n120'>120</a>
<a id='n121' href='#n121'>121</a>
<a id='n122' href='#n122'>122</a>
<a id='n123' href='#n123'>123</a>
<a id='n124' href='#n124'>124</a>
<a id='n125' href='#n125'>125</a>
<a id='n126' href='#n126'>126</a>
<a id='n127' href='#n127'>127</a>
<a id='n128' href='#n128'>128</a>
<a id='n129' href='#n129'>129</a>
<a id='n130' href='#n130'>130</a>
<a id='n131' href='#n131'>131</a>
<a id='n132' href='#n132'>132</a>
<a id='n133' href='#n133'>133</a>
<a id='n134' href='#n134'>134</a>
<a id='n135' href='#n135'>135</a>
<a id='n136' href='#n136'>136</a>
<a id='n137' href='#n137'>137</a>
<a id='n138' href='#n138'>138</a>
<a id='n139' href='#n139'>139</a>
<a id='n140' href='#n140'>140</a>
<a id='n141' href='#n141'>141</a>
<a id='n142' href='#n142'>142</a>
<a id='n143' href='#n143'>143</a>
<a id='n144' href='#n144'>144</a>
<a id='n145' href='#n145'>145</a>
<a id='n146' href='#n146'>146</a>
<a id='n147' href='#n147'>147</a>
<a id='n148' href='#n148'>148</a>
<a id='n149' href='#n149'>149</a>
<a id='n150' href='#n150'>150</a>
<a id='n151' href='#n151'>151</a>
<a id='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
</pre></td>
<td class='lines'><pre><code><style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888 } /* Comment */
.highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */
.highlight .k { color: #080; font-weight: bold } /* Keyword */
.highlight .ch { color: #888 } /* Comment.Hashbang */
.highlight .cm { color: #888 } /* Comment.Multiline */
.highlight .cp { color: #C00; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888 } /* Comment.Single */
.highlight .cs { color: #C00; font-weight: bold; background-color: #FFF0F0 } /* Comment.Special */
.highlight .gd { color: #000; background-color: #FDD } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #A00 } /* Generic.Error */
.highlight .gh { color: #333 } /* Generic.Heading */
.highlight .gi { color: #000; background-color: #DFD } /* Generic.Inserted */
.highlight .go { color: #888 } /* Generic.Output */
.highlight .gp { color: #555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666 } /* Generic.Subheading */
.highlight .gt { color: #A00 } /* Generic.Traceback */
.highlight .kc { color: #080; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #080; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #080; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #080 } /* Keyword.Pseudo */
.highlight .kr { color: #080; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #00D; font-weight: bold } /* Literal.Number */
.highlight .s { color: #D20; background-color: #FFF0F0 } /* Literal.String */
.highlight .na { color: #369 } /* Name.Attribute */
.highlight .nb { color: #038 } /* Name.Builtin */
.highlight .nc { color: #B06; font-weight: bold } /* Name.Class */
.highlight .no { color: #036; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555 } /* Name.Decorator */
.highlight .ne { color: #B06; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #06B; font-weight: bold } /* Name.Function */
.highlight .nl { color: #369; font-style: italic } /* Name.Label */
.highlight .nn { color: #B06; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #369; font-weight: bold } /* Name.Property */
.highlight .nt { color: #B06; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #369 } /* Name.Variable */
.highlight .ow { color: #080 } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #00D; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #00D; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #00D; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #00D; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #00D; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #D20; background-color: #FFF0F0 } /* Literal.String.Affix */
.highlight .sb { color: #D20; background-color: #FFF0F0 } /* Literal.String.Backtick */
.highlight .sc { color: #D20; background-color: #FFF0F0 } /* Literal.String.Char */
.highlight .dl { color: #D20; background-color: #FFF0F0 } /* Literal.String.Delimiter */
.highlight .sd { color: #D20; background-color: #FFF0F0 } /* Literal.String.Doc */
.highlight .s2 { color: #D20; background-color: #FFF0F0 } /* Literal.String.Double */
.highlight .se { color: #04D; background-color: #FFF0F0 } /* Literal.String.Escape */
.highlight .sh { color: #D20; background-color: #FFF0F0 } /* Literal.String.Heredoc */
.highlight .si { color: #33B; background-color: #FFF0F0 } /* Literal.String.Interpol */
.highlight .sx { color: #2B2; background-color: #F0FFF0 } /* Literal.String.Other */
.highlight .sr { color: #080; background-color: #FFF0FF } /* Literal.String.Regex */
.highlight .s1 { color: #D20; background-color: #FFF0F0 } /* Literal.String.Single */
.highlight .ss { color: #A60; background-color: #FFF0F0 } /* Literal.String.Symbol */
.highlight .bp { color: #038 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06B; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #369 } /* Name.Variable.Class */
.highlight .vg { color: #D70 } /* Name.Variable.Global */
.highlight .vi { color: #33B } /* Name.Variable.Instance */
.highlight .vm { color: #369 } /* Name.Variable.Magic */
.highlight .il { color: #00D; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="c"># $Id$</span>

<span class="nv">PYTHON</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@PYTHON@
<span class="nv">TRANG</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@TRANG@

<span class="nv">CFLAGS</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@CFLAGS@
<span class="nv">LDFLAGS</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@LDFLAGS@<span class="w"> </span>@POW_LDFLAGS@
<span class="nv">LIBS</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@LIBS@

<span class="nv">INSTALL</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@INSTALL@<span class="w"> </span>-m<span class="w"> </span><span class="m">555</span><span class="w"> </span>

<span class="nv">prefix</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@prefix@
<span class="nv">exec_prefix</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@exec_prefix@
<span class="nv">datarootdir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@datarootdir@
<span class="nv">datadir</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@datadir@
<span class="nv">localstatedir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@localstatedir@
<span class="nv">sharedstatedir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@sharedstatedir@
<span class="nv">sysconfdir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@sysconfdir@
<span class="nv">bindir</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@bindir@
<span class="nv">sbindir</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@sbindir@
<span class="nv">libexecdir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@libexecdir@
<span class="nv">sysconfdir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@sysconfdir@

<span class="nv">abs_builddir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@abs_builddir@
<span class="nv">abs_top_srcdir</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@abs_top_srcdir@
<span class="nv">abs_top_builddir</span><span class="o">=</span><span class="w"> </span>@abs_top_builddir@
<span class="nv">srcdir</span><span class="w">          </span><span class="o">=</span><span class="w"> </span>@srcdir@

<span class="nv">WSGI_DAEMON_PROCESS</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@WSGI_DAEMON_PROCESS@
<span class="nv">WSGI_PROCESS_GROUP</span><span class="w">		</span><span class="o">=</span><span class="w"> </span>@WSGI_PROCESS_GROUP@
<span class="nv">RCYNIC_HTML_DIR</span><span class="w">			</span><span class="o">=</span><span class="w"> </span>@RCYNIC_HTML_DIR@
<span class="nv">APACHE_VERSION</span><span class="w">			</span><span class="o">=</span><span class="w"> </span>@APACHE_VERSION@
<span class="nv">WSGI_PYTHON_EGG_CACHE_DIR</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@WSGI_PYTHON_EGG_CACHE_DIR@
<span class="nv">WSGI_PYTHON_EGG_CACHE_USER</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@WSGI_PYTHON_EGG_CACHE_USER@

<span class="nv">CA_INSTALL_TARGETS</span><span class="w">	</span><span class="o">=</span><span class="w"> </span>@CA_INSTALL_TARGETS@

<span class="nf">all</span><span class="o">::</span><span class="w"> </span><span class="n">examples</span>/<span class="n">rpki</span>.<span class="n">conf</span>

<span class="nf">clean</span><span class="o">::</span>
<span class="w">	</span><span class="nb">cd</span><span class="w"> </span>tests<span class="p">;</span><span class="w"> </span><span class="k">$(</span>MAKE<span class="k">)</span><span class="w"> </span><span class="nv">$@</span>

<span class="nf">install</span><span class="o">::</span><span class="w"> </span>${<span class="n">CA_INSTALL_TARGETS</span>}

<span class="nf">install-always</span><span class="o">::</span><span class="w"> </span><span class="n">all</span>
<span class="w">	</span>@echo
<span class="w">	</span>@echo<span class="w"> </span><span class="s2">&quot;== Default configuration file location is </span><span class="si">${</span><span class="nv">sysconfdir</span><span class="si">}</span><span class="s2">/rpki.conf ==&quot;</span>
<span class="w">	</span>@echo
<span class="w">	</span><span class="si">${</span><span class="nv">INSTALL</span><span class="si">}</span><span class="w"> </span>examples/rpki.conf<span class="w"> </span><span class="si">${</span><span class="nv">DESTDIR</span><span class="si">}${</span><span class="nv">sysconfdir</span><span class="si">}</span>/rpki.conf.sample
<span class="w">	</span><span class="si">${</span><span class="nv">INSTALL</span><span class="si">}</span><span class="w"> </span>-d<span class="w"> </span><span class="si">${</span><span class="nv">DESTDIR</span><span class="si">}${</span><span class="nv">datarootdir</span><span class="si">}</span>/rpki/publication

<span class="nf">uninstall deinstall</span><span class="o">::</span>
<span class="w">	</span>-<span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span>/rpkigui-apache-conf-gen<span class="w"> </span>--remove<span class="w"> </span>--verbose

<span class="nf">distclean</span><span class="o">::</span>
<span class="w">	</span>rm<span class="w"> </span>-f<span class="w"> </span>installed

<span class="nf">test all-tests relaxng parse-test profile yamltest yamlconf</span><span class="o">::</span><span class="w"> </span><span class="n">all</span>
<span class="w">	</span><span class="nb">cd</span><span class="w"> </span>tests<span class="p">;</span><span class="w"> </span><span class="k">$(</span>MAKE<span class="k">)</span><span class="w"> </span><span class="nv">$@</span>

<span class="nf">distclean</span><span class="o">::</span><span class="w"> </span><span class="n">clean</span>
<span class="w">	</span><span class="nb">cd</span><span class="w"> </span>tests<span class="p">;</span><span class="w"> </span><span class="si">${</span><span class="nv">MAKE</span><span class="si">}</span><span class="w"> </span><span class="nv">$@</span>
<span class="w">	</span>rm<span class="w"> </span>-f<span class="w"> </span>Makefile

<span class="nf">examples/rpki.conf</span><span class="o">:</span><span class="w"> </span>${<span class="n">abs_top_srcdir</span>}/<span class="n">rpki</span>/<span class="n">autoconf</span>.<span class="n">py</span> <span class="n">rpki</span>-<span class="n">confgen</span> <span class="n">rpki</span>-<span class="n">confgen</span>.<span class="n">xml</span>
<span class="w">	</span><span class="si">${</span><span class="nv">PYTHON</span><span class="si">}</span><span class="w"> </span>rpki-confgen<span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--read-xml<span class="w"> </span>rpki-confgen.xml<span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--autoconf<span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--set<span class="w"> </span>myrpki::handle<span class="o">=</span><span class="sb">`</span>hostname<span class="w"> </span>-f<span class="w"> </span><span class="p">|</span><span class="w"> </span>sed<span class="w"> </span><span class="s1">&#39;s/[.]/_/g&#39;</span><span class="sb">`</span><span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--set<span class="w"> </span>myrpki::rpkid_server_host<span class="o">=</span><span class="sb">`</span>hostname<span class="w"> </span>-f<span class="sb">`</span><span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--set<span class="w"> </span>myrpki::pubd_server_host<span class="o">=</span><span class="sb">`</span>hostname<span class="w"> </span>-f<span class="sb">`</span><span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--pwgen<span class="w"> </span>myrpki::shared_sql_password<span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--pwgen<span class="w"> </span>web_portal::secret-key<span class="w"> </span><span class="se">\</span>
<span class="w">		</span>--write-conf<span class="w"> </span><span class="nv">$@</span>

<span class="nf">clean</span><span class="o">::</span>
<span class="w">	</span>rm<span class="w"> </span>-f<span class="w"> </span>examples/rpki.conf

<span class="nf">install-postconf</span><span class="o">:</span><span class="w"> </span>\
	<span class="n">install</span>-<span class="n">user</span> <span class="n">install</span>-<span class="n">egg</span>-<span class="n">cache</span> <span class="n">install</span>-<span class="n">conf</span> <span class="n">install</span>-<span class="n">apache</span> <span class="n">install</span>-<span class="n">mysql</span> <span class="n">install</span>-<span class="n">django</span> <span class="n">install</span>-<span class="n">bpki</span> <span class="n">install</span>-<span class="n">cron</span>

<span class="c"># This should create user &quot;rpkid&quot; and group &quot;rpkid&quot;, but as we have</span>
<span class="c"># not yet tested our ability to run in such a configuration, this</span>
<span class="c"># would be a little premature.  Can steal Makefile code for this from</span>
<span class="c"># rcynic when we&#39;re ready to do something with it.</span>

<span class="nf">install-user</span><span class="o">:</span>
<span class="w">	</span>@true

<span class="c"># This is only necessary on some platforms (currently FreeBSD,</span>
<span class="c"># due to shortcomings in the way that Python eggs are installed</span>
<span class="c"># as system libraries).</span>

<span class="nf">install-egg-cache</span><span class="o">:</span>
<span class="w">	</span>@if<span class="w"> </span><span class="nb">test</span><span class="w"> </span><span class="s1">&#39;X${WSGI_PYTHON_EGG_CACHE_DIR}&#39;</span><span class="w"> </span>!<span class="o">=</span><span class="w"> </span>X<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">test</span><span class="w"> </span>!<span class="w"> </span>-d<span class="w"> </span><span class="s1">&#39;${WSGI_PYTHON_EGG_CACHE_DIR}&#39;</span><span class="p">;</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="se">\</span>
<span class="w">		</span>mkdir<span class="w"> </span>-v<span class="w"> </span><span class="s1">&#39;${WSGI_PYTHON_EGG_CACHE_DIR}&#39;</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
<span class="cp">		if test &#39;X${WSGI_PYTHON_EGG_CACHE_USER}&#39; != X; then \</span>
<span class="cp">			chown &#39;${WSGI_PYTHON_EGG_CACHE_USER}&#39; &#39;${WSGI_PYTHON_EGG_CACHE_DIR}&#39;; \</span>
<span class="cp">		fi; \</span>
<span class="cp">	fi</span>

<span class="c"># We used to play the FreeBSD game of copying rpki.conf.sample to</span>
<span class="c"># rpki.conf on install and removing rpki.conf if it&#39;s identical to</span>
<span class="c"># rpki.conf.sample in uninstall, but that turns out to work poorly</span>
<span class="c"># with generated passwords.  So now we copy rpki.conf.sample if and</span>
<span class="c"># only if rpki.conf does not exist, and we leave removal of rpki.conf</span>
<span class="c"># for the user to deal with.  This in turn leaves us with a different</span>
<span class="c"># problem of how to upgrade rpki.conf, but at least in the FreeBSD</span>
<span class="c"># universe we&#39;re supposed to leave that problem for the user.</span>

<span class="nf">install-conf</span><span class="o">:</span>
<span class="cp">	if test -f ${DESTDIR}${sysconfdir}/rpki.conf; \</span>
<span class="cp">	then \</span>
<span class="cp">	    true; \</span>
<span class="cp">	else \</span>
<span class="cp">	    cp -p ${DESTDIR}${sysconfdir}/rpki.conf.sample ${DESTDIR}${sysconfdir}/rpki.conf; \</span>
<span class="cp">	fi</span>

<span class="nf">uninstall deinstall</span><span class="o">::</span>
<span class="c">#	if cmp -s ${DESTDIR}${sysconfdir}/rpki.conf ${DESTDIR}${sysconfdir}/rpki.conf.sample; then rm -f ${DESTDIR}${sysconfdir}/rpki.conf; else true; fi</span>
<span class="w">	</span>rm<span class="w"> </span>-f<span class="w"> </span><span class="si">${</span><span class="nv">DESTDIR</span><span class="si">}${</span><span class="nv">sysconfdir</span><span class="si">}</span>/rpki.conf.sample

<span class="nf">install-apache</span><span class="o">:</span>
<span class="w">	</span><span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span>/rpkigui-apache-conf-gen<span class="w"> </span>--install<span class="w"> </span>--verbose

<span class="nf">install-mysql</span><span class="o">:</span>
<span class="w">	</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span>/rpki-sql-setup<span class="w"> </span>--create-if-missing
<span class="w">	</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span>/rpki-sql-setup<span class="w"> </span>--apply-upgrades<span class="w"> </span>--verbose

<span class="nf">install-django</span><span class="o">:</span>
<span class="w">	</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span>/rpki-manage<span class="w"> </span>syncdb<span class="w"> </span>--noinput
<span class="w">	</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span>/rpki-manage<span class="w"> </span>migrate<span class="w"> </span>app

<span class="nf">install-bpki</span><span class="o">:</span>
<span class="w">	</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span>/rpkic<span class="w"> </span>initialize_server_bpki

<span class="c"># This needs to set up crontab entries for rpkigui-check-expired,</span>
<span class="c"># rpkigui-import-routes, and rpkic update_bpki.  They probably don&#39;t</span>
<span class="c"># want run under the same user IDs either, so what with having to use</span>
<span class="c"># /usr/bin/crontab on some platforms, this should be entirely too</span>
<span class="c"># entertaining.  Might be ok to run them all as user rpkid eventually.</span>
<span class="c">#</span>
<span class="c"># We really should be running exactly the same cron setup/teardown</span>
<span class="c"># code here as we do in platform-specific post-installation scripts,</span>
<span class="c"># but for now we just use crontab(1) here on all platforms.</span>

<span class="nf">install-cron</span><span class="o">:</span><span class="w"> </span><span class="n">install</span>-<span class="n">cron</span>-<span class="n">using</span>-<span class="n">crontab</span>

<span class="nf">uninstall deinstall</span><span class="o">::</span><span class="w"> </span><span class="n">uninstall</span>-<span class="n">cron</span>-<span class="n">using</span>-<span class="n">crontab</span>

<span class="c"># Code for setting up and tearing down cron jobs using the crontab(1)</span>
<span class="c"># program.  We don&#39;t use this on all platforms, but we do use it on</span>
<span class="c"># more than one, so it&#39;s broken out here as common code.</span>
<span class="c">#</span>
<span class="c"># CRONTAB_USER really should be rpkid, but we don&#39;t have the rest of</span>
<span class="c"># the package set up for that yet, so run it as root for now.</span>

<span class="nv">CRONTAB_USER</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>root

<span class="nf">install-cron-using-crontab</span><span class="o">:</span>
<span class="w">	</span>@crontab<span class="w"> </span>-l<span class="w"> </span>-u<span class="w"> </span><span class="si">${</span><span class="nv">CRONTAB_USER</span><span class="si">}</span><span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w">						</span><span class="se">\</span>
<span class="w">	 </span>awk<span class="w"> </span>-v<span class="w"> </span><span class="nv">t</span><span class="o">=</span><span class="sb">`</span>hexdump<span class="w"> </span>-n<span class="w"> </span><span class="m">2</span><span class="w"> </span>-e<span class="w"> </span><span class="s1">&#39;&quot;%u\n&quot;&#39;</span><span class="w"> </span>/dev/urandom<span class="sb">`</span><span class="w"> </span><span class="err">&#39;</span><span class="w">					</span><span class="se">\</span>
<span class="w">	     </span>BEGIN<span class="w"> </span><span class="o">{</span><span class="w">										</span><span class="se">\</span>
<span class="w">		 </span>cmd<span class="o">[</span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span><span class="s2">/rpkigui-import-routes&quot;</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>sprintf<span class="o">(</span><span class="s2">&quot;%2u */2 * * *&quot;</span>,<span class="w"> </span>t<span class="w"> </span>%<span class="w"> </span><span class="m">60</span><span class="o">)</span><span class="p">;</span><span class="w">	</span><span class="se">\</span>
<span class="w">		 </span>cmd<span class="o">[</span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span><span class="s2">/rpkigui-check-expired&quot;</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w">          </span><span class="s2">&quot;@daily      &quot;</span><span class="p">;</span><span class="w">		</span><span class="se">\</span>
<span class="w">		 </span>cmd<span class="o">[</span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span><span class="s2">/rpkic update_bpki&quot;</span><span class="w">       </span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w">          </span><span class="s2">&quot;30 3 * * *  &quot;</span><span class="p">;</span><span class="w">		</span><span class="se">\</span>
<span class="w">	     </span><span class="o">}</span><span class="w">											</span><span class="se">\</span>
<span class="w">	     </span><span class="o">{</span><span class="w">											</span><span class="se">\</span>
<span class="w">		 </span>print<span class="p">;</span><span class="w">										</span><span class="se">\</span>
<span class="w">		 </span><span class="k">for</span><span class="w"> </span><span class="o">(</span>i<span class="w"> </span><span class="k">in</span><span class="w"> </span>cmd<span class="o">)</span><span class="w">									</span><span class="se">\</span>
<span class="cp">		     if ($$0 ~ i)								\</span>
<span class="cp">			 found[i] = $$0;							\</span>
<span class="cp">	     }											\</span>
<span class="cp">	     END {										\</span>
<span class="cp">		 for (i in cmd)									\</span>
<span class="cp">		     if (!found[i])								\</span>
<span class="cp">			 print cmd[i] &quot;\texec &quot; i;						\</span>
<span class="cp">	     }&#39; |										\</span>
<span class="cp">	 crontab -u ${CRONTAB_USER} -</span>

<span class="nf">uninstall-cron-using-crontab</span><span class="o">:</span>
<span class="w">	</span>@crontab<span class="w"> </span>-l<span class="w"> </span>-u<span class="w"> </span><span class="si">${</span><span class="nv">CRONTAB_USER</span><span class="si">}</span><span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w">			</span><span class="se">\</span>
<span class="w">	 </span>awk<span class="w"> </span><span class="err">&#39;</span><span class="w">								</span><span class="se">\</span>
<span class="w">	     </span>BEGIN<span class="w"> </span><span class="o">{</span><span class="w">							</span><span class="se">\</span>
<span class="w">		</span><span class="nv">empty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w">						</span><span class="se">\</span>
<span class="w">	     </span><span class="o">}</span><span class="w">								</span><span class="se">\</span>
<span class="w">	     </span><span class="nv">$$</span><span class="m">0</span><span class="w"> </span>!~<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span><span class="s2">/rpkigui-import-routes&quot;</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w">		</span><span class="se">\</span>
<span class="w">	     </span><span class="nv">$$</span><span class="m">0</span><span class="w"> </span>!~<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">libexecdir</span><span class="si">}</span><span class="s2">/rpkigui-check-expired&quot;</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w">		</span><span class="se">\</span>
<span class="w">	     </span><span class="nv">$$</span><span class="m">0</span><span class="w"> </span>!~<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">sbindir</span><span class="si">}</span><span class="s2">/rpkic update_bpki&quot;</span><span class="w"> </span><span class="o">{</span><span class="w">			</span><span class="se">\</span>
<span class="w">		</span><span class="nv">empty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w">						</span><span class="se">\</span>
<span class="w">		</span>print<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="s2">&quot;/usr/bin/crontab -u </span><span class="si">${</span><span class="nv">CRONTAB_USER</span><span class="si">}</span><span class="s2"> -&quot;</span><span class="p">;</span><span class="w">	</span><span class="se">\</span>
<span class="w">	     </span><span class="o">}</span><span class="w">								</span><span class="se">\</span>
<span class="w">	     </span>END<span class="w"> </span><span class="o">{</span><span class="w">							</span><span class="se">\</span>
<span class="cp">		if (empty)						\</span>
<span class="cp">		    system(&quot;/usr/bin/crontab -u ${CRONTAB_USER} -r&quot;);	\</span>
<span class="cp">	     }&#39;</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2025-07-06 02:08:58 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
