MassConf: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Root (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== Freepascal Consolen Programm === # Das Programm liesst ablagen.conf (Template) und ablagen.csv (Datenbank) # Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben # ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt # Nach dem Doppelpunkt werden alle ~Spaltenüberschriften~ der .csv in den jeweiligen Wert umgesetzt # die Konfiguration wird nach sites-enabled gespeichert program mas…“) |
|||
| Zeile 1: | Zeile 1: | ||
=== Freepascal Consolen Programm === | === Freepascal Consolen Programm === | ||
# Das Programm liesst ablagen.conf (Template) und ablagen.csv (Datenbank) | # Das Programm liesst ablagen.conf (Template) und ablagen.csv (Datei wird manuell erstellt) (Datenbank) | ||
# Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben | # Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben | ||
# ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt | # ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt | ||
Aktuelle Version vom 25. August 2025, 15:39 Uhr
Freepascal Consolen Programm
- Das Programm liesst ablagen.conf (Template) und ablagen.csv (Datei wird manuell erstellt) (Datenbank)
- Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben
- ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt
- Nach dem Doppelpunkt werden alle ~Spaltenüberschriften~ der .csv in den jeweiligen Wert umgesetzt
- die Konfiguration wird nach sites-enabled gespeichert
program massConf;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, Unix;
function split(s:string; Delimiter:string=';'):TStringList;
var
n : Integer;
begin
result := TStringList.create;
repeat
n := pos(Delimiter,s);
if (n>0) then
begin
result.add( copy(s,1,pred(n)));
s := copy(s,succ(n),MaxInt);
end else
begin
result.add(s);
break;
end;
until false;
end;
var
sHeaders : TStringList;
sValues : TStringList;
const
Param = 'ablagen';
function eval(s:string):string;
var
n,m : Integer;
begin
if (pos('~',s)>0) then
begin
for n := 0 to pred(sHeaders.count) do
begin
m := pos('~'+sHeaders[n]+'~',s);
if (m>0) then
begin
s :=
copy(s,1,pred(m)) +
sValues[n] +
copy(s,m+length(sHeaders[n])+2,MaxInt);
if (pos('~',s)=0) then
break;
end;
end;
end;
result := s;
end;
var
sConf : TStringList;
sParameter : TStringList;
sTemplate : TStringList;
sOutPut : TStringList;
sData : TStringList;
sCopy : TStringList;
n,m : Integer;
StartDataFlag : boolean;
// Parameter
pOutput : string;
begin
sConf := TStringList.create;
sConf.loadfromFile(Param+'.conf');
StartDataFlag := false;
sTemplate := TStringList.create;
sParameter := TStringList.create;
for n := 0 to pred(sConf.count) do
begin
if StartDataFlag then
begin
sTemplate.add(sConf[n]);
end else
begin
if (pos('#',sConf[n])<>1) then
sParameter.add(sConf[n]);
end;
if not(StartDataFlag) then
if (sConf[n]=':') then
StartDataFlag := true;
end;
sConf.free;
// Load the parameter, more to come
pOutPut := sParameter.values['Output'];
sData := TStringList.create;
sData.loadfromFile(Param+'.csv');
sHeaders := split(sData[0]);
for n := 1 to pred(sData.count) do
begin
// prepare Data
sValues := split(sData[n]);
// assume [0] is speakfull
write( sValues[0] + ' ... ' );
// Dateien sicherstellen?
for m := 0 to pred(sParameter.count) do
if (pos('cp ',sParameter[m])=1) then
begin
sCopy := split(eval(sParameter[m]),' ');
if not(FileExists(sCopy[2])) then
fpsystem('cp '+sCopy[1]+' '+sCopy[2]);
sCopy.free;
end;
// Template ausbelichten
sOutPut := TStringList.create;
for m := 0 to pred(sTemplate.count) do
sOutPut.add( eval(sTemplate[m]));
sOutPut.saveToFile(eval(pOutPut));
sOutPut.free;
// unprepare
sValues.free;
writeln('OK');
end;
sData.free;
sHeaders.free;
sTemplate.free;
sParameter.free;
end.
Template für http
- ablagen.conf
#
# Konfigurations-Template für nginx für Internet-Ablagen
# - für die alten Ablagen -
#
Output=/etc/nginx/sites-enabled/~Name~.orgamon.de
cp /srv/ftp/favicon.ico /srv/ftp/~Name~/favicon.ico
:
server {
listen 80;
root /srv/ftp/~Name~;
server_name
~Name~.orgamon.de
~Name~.netzumbau.de
~Name~.websrv.lummerland;
auth_basic "~Name~";
auth_basic_user_file /srv/ftp/~Name~/.htpasswd;
index index.php;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
index index.php index.html;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
Template für https
#
# Konfigurations-Template für nginx für Internet-Ablagen
#
Output=/etc/nginx/sites-enabled/~Name~.orgamon.org
cp /srv/ftp/favicon.ico /srv/ftp/~Name~/favicon.ico
:
server {
listen 443 ssl http2;
ssl_protocols TLSv1.2;
root /srv/ftp/~Name~;
index index.php;
server_name ~Name~.orgamon.org;
ssl_certificate /etc/letsencrypt/live/orgamon.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/orgamon.org/privkey.pem;
auth_basic "~Name~";
auth_basic_user_file /srv/ftp/~Name~/.htpasswd;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
index index.php index.html;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
Liste der Server
- ablagen.csv
Name;FTP;ZIP subdomain1;***;*** subdomain2;***;***