<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.orgamon.org/index.php?action=history&amp;feed=atom&amp;title=MassConf</id>
	<title>MassConf - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.orgamon.org/index.php?action=history&amp;feed=atom&amp;title=MassConf"/>
	<link rel="alternate" type="text/html" href="https://wiki.orgamon.org/index.php?title=MassConf&amp;action=history"/>
	<updated>2026-04-26T19:26:01Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in OrgaMon Wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.orgamon.org/index.php?title=MassConf&amp;diff=32969&amp;oldid=prev</id>
		<title>OrgaMon: /* Freepascal Consolen Programm */</title>
		<link rel="alternate" type="text/html" href="https://wiki.orgamon.org/index.php?title=MassConf&amp;diff=32969&amp;oldid=prev"/>
		<updated>2025-08-25T14:39:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Freepascal Consolen Programm&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 25. August 2025, 16:39 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Freepascal Consolen Programm ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Freepascal Consolen Programm ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Das Programm liesst ablagen.conf (Template) und ablagen.csv (Datenbank)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Das Programm liesst ablagen.conf (Template) und ablagen.csv &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Datei wird manuell erstellt) &lt;/ins&gt;(Datenbank)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Für jeden Datensatz in der .csv wird eine Konfigurations Datei geschrieben&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ablagen.conf wird gelesen, vor dem Doppelpunkt werden Parameter gesetzt und Befehle ausgeführt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>OrgaMon</name></author>
	</entry>
	<entry>
		<id>https://wiki.orgamon.org/index.php?title=MassConf&amp;diff=32957&amp;oldid=prev</id>
		<title>Root: 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…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.orgamon.org/index.php?title=MassConf&amp;diff=32957&amp;oldid=prev"/>
		<updated>2025-08-13T09:17:29Z</updated>

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