Saya memiliki kode berikut:
if (!EAP-Message) {
# Now check against the authorized_macs file
<%- @filename.each do |key,value| -%>
<%= key %>
if (!ok) {
<%- end -%>
eap
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
eap
}
Saya ingin membuat indentasi file dengan benar dengan menambahkan indentasi atau spasi atau tab setelah setiap loop, sehingga terlihat seperti ini:
if (!EAP-Message) {
# Now check against the authorized_macs file
authorized_macs_10
if (!ok) {
authorized_macs_11
if (!ok) {
authorized_macs_12
if (!ok) {
authorized_macs_13
if (!ok) {
authorized_macs_14
if (!ok) {
eap
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
eap
}
Ini adalah bagian dari /etc/freeradius/sites-available/default modul boneka freeradius saya, yang akhirnya selesai. Variabel @filename
adalah hiera_hash, yang saya dapatkan dari file yaml. Inilah bagian yang relevan:
test_freeradius::files:
'authorized_macs_10':
macs:
- 'aaaaa'
- 'bbbbb'
vlan: '10'
'authorized_macs_11':
macs:
- 'ccccc'
- 'ddddd'
vlan: '11'
'authorized_macs_12':
macs:
- 'eeeee'
- 'fffff'
vlan: '12'
'authorized_macs_13':
macs:
- 'ggggg'
- 'hhhhh'
vlan: '13'
'authorized_macs_14':
macs:
- 'iiiii'
- 'jjjjj'
vlan: '14'
Dan di bawah ini adalah definisi yang saya gunakan untuk membuat antara lain konten file default
:
define test_freeradius::files (
$macs,
$vlan,
$macfile = $title,
) {
include test_freeradius::service
ensure_resource('file', '/etc/freeradius/modules/files', {
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0644',
content => template("${module_name}/files.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
)
file { "/etc/freeradius/${macfile}" :
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0644',
content => template("${module_name}/macfiles.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
ensure_resource('file', '/etc/freeradius/sites-available/default', {
ensure => 'file',
owner => 'root',
group => 'freerad',
mode => '0644',
content => template("${module_name}/default.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
)
ensure_resource('file', '/etc/freeradius/sites-enabled/default', {
ensure => 'link',
target => '/etc/freeradius/sites-available/default',
}
)
}
Perulangan melakukan apa yang seharusnya, tetapi tanpa lekukan, saya mencoba berbagai hal seperti menambahkan <%= " "%>
di beberapa posisi dan membuat variabel untuk bagian if (!ok) {
, sayangnya tidak berhasil, mungkin saya harus merestrukturisasi kodenya? ada ide?
@filename
ke dalam variabel JavaScript (mungkin menggunakan JSON) dan kemudian mengulangi data dalam JavaScript? Pendekatan tersebut cenderung lebih bersih dan mudah dipahami dibandingkan menulis pembuat kode. - person mu is too short   schedule 16.05.2017