Hi!
Da ich nicht jedesmal Visual Studio und WinSCP bemühen mag um eine Kleinigkeit an der Konfiguration zu ändern habe ich ähnlich dem Plugin-Editor des Wiregate (edit_plugin.cgi) eine vereinfachte Form für LinKNX "geschrieben". Obwohl ich alle Abhängigkeiten zum Wiregate versucht habe zu lösen muss die Datei derzeit noch zusammen mit dem wiregate-webmin installiert werden. Einfach in /usr/share/webmin/wiregate/ kopieren und mit "http://<server>:10000/wiregate/edit_linknx.cgi" aufrufen. Die Konfiguration kann wahlweise gespeichert oder gespeichert und LinKNX neu gestartet werden. Die einzige Abhängigkeit zum WG ist derzeit noch die Ausgabe der Logdateien.
Mögliche Erweiterungen die ich schick fände:
- Eigenständiges Webmin-Modul (module.info verfassen etc. und "editarea" von http://www.cdolivet.com/editarea/ mitliefern)
- angelegte "Objects" analog den GAs im Plugin-Editor als Dropdown anzeigen
- irgendwie die xsd von mumpf für einen Syntax-Check verwenden - wäre die Krönung!
Grüße
Robert
Da ich nicht jedesmal Visual Studio und WinSCP bemühen mag um eine Kleinigkeit an der Konfiguration zu ändern habe ich ähnlich dem Plugin-Editor des Wiregate (edit_plugin.cgi) eine vereinfachte Form für LinKNX "geschrieben". Obwohl ich alle Abhängigkeiten zum Wiregate versucht habe zu lösen muss die Datei derzeit noch zusammen mit dem wiregate-webmin installiert werden. Einfach in /usr/share/webmin/wiregate/ kopieren und mit "http://<server>:10000/wiregate/edit_linknx.cgi" aufrufen. Die Konfiguration kann wahlweise gespeichert oder gespeichert und LinKNX neu gestartet werden. Die einzige Abhängigkeit zum WG ist derzeit noch die Ausgabe der Logdateien.
Mögliche Erweiterungen die ich schick fände:
- Eigenständiges Webmin-Modul (module.info verfassen etc. und "editarea" von http://www.cdolivet.com/editarea/ mitliefern)
- angelegte "Objects" analog den GAs im Plugin-Editor als Dropdown anzeigen
- irgendwie die xsd von mumpf für einen Syntax-Check verwenden - wäre die Krönung!
PHP-Code:
#!/usr/bin/perl
do '../web-lib.pl';
init_config();
do '../ui-lib.pl';
&ReadParse();
sub restart_linknx
{
local $out;
$out = &backquote_logged("/etc/init.d/linknx restart 2>&1 </dev/null");
return $? ? "<pre>$out</pre>" : undef;
}
if ($in{'save'} && $in{'data'}) {
# CRLF
$in{'data'} =~ s/\r//g;
open XML_FILE, "> /var/lib/linknx/linknx.xml";
print XML_FILE $in{'data'};
close XML_FILE;
if ($err2) {
&error($err2);
} else {
$head = "<META HTTP-EQUIV=REFRESH CONTENT=10>\n";
&header("LinKNX Editor",undef,undef,0,0,0,"<a href=javascript:location.reload()>Neu laden</a>",$head);
print "<h2>XML erfolgreich gespeichert</h2>";
if ($in{'restart'}) {
$out = &backquote_logged("/etc/init.d/linknx restart 2>&1 </dev/null");
print "zurueck:".$out;
}
}
} else {
$head .= "<script language=javascript type=text/javascript src=editarea/edit_area_full.js></script>\n";
$head .= "<script language=javascript type=text/javascript>";
$head .= "editAreaLoader.init({ \n";
$head .= " id : \"data\" // textarea id \n";
$head .= " ,syntax: \"xml\" // syntax to be uses for highgliting \n";
$head .= " ,start_highlight: true // to display with highlight mode on start-up\n";
$head .= " ,language: \"de\" \n";
$head .= "});\n";
$head .= "</script>\n";
&header("LinKNX Editor",undef,undef,0,0,0,"<a href=javascript:location.reload()>Neu laden</a>",$head);
# Editor window
$w = $config{'width'} || 80;
$h = $config{'height'} || 20;
print &ui_form_start("edit_linknx.cgi", "post");
print &ui_hidden("save", "1");
print &ui_table_start("LinKNX Konfiguration", undef, 2);
$data = &read_file_contents("/var/lib/linknx/linknx.xml");
print &ui_table_row(undef, "<textarea id=data name=data rows=30 cols=140 wrap=off>".$data."</textarea>",2);
print &ui_table_end();
print &ui_form_end([ [undef,"Speichern" ], ['restart',"Speichern & LinKNX neu starten"] ]);
print &ui_hr();
if (-e "/var/log/linknx.log") {
print "<br><a href=/wiregate/view_log.cgi?view=1&file=/var/log/linknx.log target=_new>LinKNX-Logdatei anzeigen</a>";
}
print "<br><a href=/wiregate/view_log.cgi?view=1&file=/var/log/messages&filter=linknx target=_new>Daemon-Logdatei anzeigen</a>";
}
ui_print_footer(undef, $text{'index'});
Robert