Und das Ganze jetzt bitte noch in Kurzform statt Prosa
Beiträge von kls
-
-
MarkusE Ist die Frage nicht eher, warum überhaupt versucht wird, einen Player am PrimaryDevice zu attachen, wenn es keinen Decoder hat?
-
Kann ich hier nicht nachvollziehen.
Allerdings benutze ich softhddevice, keine TT6400.
-
VDR version 2.6.7 is now available at the official VDR GIT archive
git://git.tvdr.de
You can also get the latest stable version with
git clone --branch stable/2.6 git://git.tvdr.de/vdr.git
or as a tar archive with
http://git.tvdr.de/?p=vdr.git;a=snapshot;h=refs/tags/2.6.7;sf=tbz2
The changes since version 2.6.6:
- Fixed the move assignment operator to check for self-assignment (suggested by
Stefan Herdler).
- Added missing initialization of cChannel::nameSourceMode (thanks to Winfried Köhler).
- Modified handling channel names with source to make it thread safe (thanks to
Stefan Herdler).
- Adapted "Setup/Miscellaneous/Show channel names with source" to the new handling
in cChannel.
- Added a 15 second grace period before actually stopping a VPS timer (thanks to
Markus Ehrnsperger).
- The primary device no longer starts unnecessary threads if it doesn't have a decoder
(thanks to Markus Ehrnsperger).
- The info file of a recording is now re-read if an update of the video directory
is triggered, to make sure modifications from other VDRs are adopted.
- Updated the Hungarian OSD texts (thanks to István Füley).
- The new setup parameters "EPG scan max. channel number" and "EPG pause after scan"
can be used to tune the behavior of the EPG scan (see MANUAL for details).
- Improved handling present/following data for VPS timers (thanks to Markus Ehrnsperger).
- Logging event status changes now also shows the previous status (thanks to Markus
Ehrnsperger).
- Fixed logging when a timer has entered the VPS margin.
- The EIT scan no longer deletes the scanList if no device was switched in this pass.
- The EIT scan now skips scanList entries if a device is already tuned to that
transponder.
- The EIT scan is no longer inhibited if a timer is in VPS margin or needs the
transponder.
- If the current channel is no longer available because of a VPS timer entering the
VPS margin, live view now switches to the channel of that timer.
- A device is now always kept occupied if a timer is in VPS margin or needs the
transponder (thanks to Markus Ehrnsperger).
Homepage: http://www.tvdr.de
Facebook: https://www.facebook.com/VideoDiskRecorder
Have fun!
Klaus
-
Ja, ausgehende Mails werden mit DKIM signiert und vom Empfänger akzeptiert. Auch check-auth@verifier.port25.com
erkennt es als korrekt.
Da es mir eh nur um das Signieren von ausgehenden Mails ging können wir das Problem wohl auch ad acta legen. Eingehende Mails mit DKIM erzeugen halt eine Fehlermeldung im Log, aber das kann ich verschmerzen.
-
pixelpeter Der Selector ist in opendkim.conf definiert. Auch mit '-s 2024' ändert sich nichts.
Ich denke mal, es liegt daran, dass libunbound keine DNS-Lookups machen kann. Im Logfile kommen ähnliche Meldungen:
Mar 26 21:41:31 racoon opendkim[4048]: 42QKfVoE004251: key retrieval failed (s=root, d=romaneumaticos.com.ar): 'root._domainkey.romaneumaticos.com.ar' query failed
-
Nach "aussen" ist ja eigentlich alles offen.
"opendkim" hat nur "libunbound" installiert, nicht "unbound". Hat das evtl. damit zu tun?
-
Ich versuche, auf einem openSUSE 15.3 Server DKIM (opendkim) einzurichten. Der Grund ist, dass web.de und gmx.de Emails von meinem Server immer erst Stunden bis Tage später annehmen, weil sie kein DKIM haben.
Ich glaube, alles richtig konfiguriert zu haben, aber wenn ich
opendkim-testkey -vv -x /etc/opendkim/opendkim.conf -d tvdr.de
aufrufe bekomme ich
opendkim-testkey: checking key '2024._domainkey.tvdr.de'
opendkim-testkey: '2024._domainkey.tvdr.de' query failed
Der DNS-Eintrag stimmt
nslookup -q=txt 2024._domainkey.tvdr.de
liefert
2024._domainkey.tvdr.de text = "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADC..."
und auch ein externes Tool wieDKIM Record Checker - DKIM - DNS CheckerWith DKIM tester perform the domain DKIM record lookup. The tool fetches the domain's DKIM record for a specific selector and helps identify its issues.dnschecker.orgsagt, dass der Eintrag OK ist.
Hat jemand eine Idee, warum opendkim-testkey "query failed" meldet?
-
purzel Meinen letzten Stand findest du hier: http://ftp.tvdr.de/Plugins.
Ob es mit der aktuellen VDR-Version funktioniert, weiß ich nicht. Einfach mal probieren ;-).
-
Siehe auch INSTALL:
Code
Alles anzeigenExecuting commands before and after a recording: ------------------------------------------------ You can use the '-r' option to define a program or script that gets called at various stages of handling recordings. ... Within this program you can do anything you would like to do before and/or after a recording or after an editing process. However, the program must return as soon as possible, because otherwise it will block further execution of VDR. Be especially careful to make sure the program returns before the watchdog timeout you may have set up with the '-w' option! If the operation you want to perform will take longer, you will have to run it as a background job.
-
MarkusE Magst du dir bitte beiliegende Version anschauen? And den XXX-Stellen möchte ich mir die Kommentare noch etwas anschauen, aber ansonsten sollte es aus meiner Sicht so passen.
-
Wenn der Sender die Zeiten im Event korrekt anpasst, sollte es richtig funktionieren.
-
MarkusE Kann es sein, dass mit deinem Patch in dem Fall, dass vom Sender keine EIT-Daten kommen (aus welchen Gründen auch immer) die Aufnahme nie startet? In der bisherigen Version würde er zumindest die vorgegebene Zeit aufnehmen, aber durch das 'return false' im Falle, dass die Aufnahme noch nicht begonnen hat, wird sie auch nie beginnen.
-
Welchen Sinn macht es, Timer zu programmieren, von denen man von vornherein weiß, dass sie nicht gleichzeitig aufnehmen können?
Und warum beginnt Timer C verspätet?
-
Besteht die Möglichkeit den Wert in das Setup zu verlagern? Als Konstante im Code ist das doch eher etwas unflexibel.
Welchen Wert würdest du denn wählen, wenn es einstellbar wäre?
-
Was wäre denn stattdessen von folgender Variante zu halten?
Diff
Alles anzeigen--- timers.c 2024/03/03 15:47:09 5.19 +++ timers.c 2024/03/05 10:31:42 @@ -22,6 +22,7 @@ // value! #define VPSGRACE 15 // seconds we still record after the running status of a VPS event has changed to "not running" +#define PRIORITYGRACE 1 // --- cTimer ---------------------------------------------------------------- @@ -50,6 +51,7 @@ start = now->tm_hour * 100 + now->tm_min; stop = 0; vpsNotRunning = 0; + priorityGrace = 0; if (!Setup.InstantRecordTime && channel && (Instant || Pause)) { LOCK_SCHEDULES_READ; if (const cSchedule *Schedule = Schedules->GetSchedule(channel)) { @@ -190,6 +192,7 @@ remote = NULL; event = NULL; vpsNotRunning = 0; + priorityGrace = 0; if (!PatternTimer || PatternTimer->HasFlags(tfVps)) { if (Event->Vps() && (PatternTimer || Setup.UseVps)) SetFlags(tfVps); @@ -260,6 +263,7 @@ priority = Timer.priority; lifetime = Timer.lifetime; vpsNotRunning = 0; + priorityGrace = 0; strncpy(pattern, Timer.pattern, sizeof(pattern)); strncpy(file, Timer.file, sizeof(file)); free(aux); @@ -624,7 +628,16 @@ } else vpsNotRunning = 0; - return running || time(NULL) < vpsNotRunning + VPSGRACE; + if (running || time(NULL) < vpsNotRunning + VPSGRACE) + return true; + if (vpsNotRunning && t < event->EndTime()) { + if (!priorityGrace) + dsyslog("timer %s for event %s set grace priority to %d", *ToDescr(), *Event()->ToDescr(), PRIORITYGRACE); + priorityGrace = PRIORITYGRACE; + return true; + } + priorityGrace = 0; + return false; } // ...otherwise we fall back to normal timer handling below (note: Margin == 0!) } @@ -942,6 +955,7 @@ SetFlags(tfRecording); else ClrFlags(tfRecording); + priorityGrace = 0; isyslog("timer %s %s", *ToDescr(), Recording ? "start" : "stop"); } --- timers.h 2024/03/03 15:47:09 5.10 +++ timers.h 2024/03/05 10:08:21 @@ -46,6 +46,7 @@ int start; ///< the start and stop time of this timer as given by the user, int stop; ///< in the form hhmm, with hh (00..23) and mm (00..59) added as hh*100+mm int priority; + mutable int priorityGrace; int lifetime; mutable char pattern[NAME_MAX * 2 + 1]; // same size as 'file', to be able to initially fill 'pattern' with 'file' in the 'Edit timer' menu mutable char file[NAME_MAX * 2 + 1]; // *2 to be able to hold 'title' and 'episode', which can each be up to 255 characters long @@ -70,7 +71,7 @@ int WeekDays(void) const { return weekdays; } int Start(void) const { return start; } int Stop(void) const { return stop; } - int Priority(void) const { return priority; } + int Priority(void) const { return priorityGrace ? priorityGrace : priority; } int Lifetime(void) const { return lifetime; } const char *Pattern(void) const { return pattern; } const char *File(void) const { return file; }
- Ändert keine Interfaces.
- Wenn VPS+VPSGRACE abgelaufen ist, wird mit niedriger Priorität weiter bis zum Ende der Event-Zeit aufgenommen, womit auch gleichzeitig sichergestellt ist, dass der Event aktuell bleibt.
- Evtl. wäre noch darüber nachzudenken, ob priorityGrace '1' sein soll, oder besser 'priority - 1', oder ganz anders.
-
Ich denke mal, es müsste auch gehen, wenn lastScan auf 0 initialisiert und entsprechend abgefragt wird.
Bitte schau dir mal beiliegende Fassung an und sag Bescheid, ob das so OK wäre.
Die dsyslog() Ausgaben habe ich zu Testen noch aktiv gelassen, die werde ich am Schluss noch auskommentieren.
-
Was genau hat es denn mit 'firstCall' auf sich?
Ist das nicht bereits dadurch klar, ob es eine scanList gibt?
Übersehe ich da was?
-
An dieser Stelle mal wieder der Hinweis, dass ich Beiträge immer gerne in HISTORY und CONTRIBUTORS namentlich nenne, sofern mir der Realname bekannt ist.
-
Ich denke, es sollte eher so aussehen:
Diff
Alles anzeigen--- recording.c 2024/01/24 13:24:51 5.26 +++ recording.c 2024/03/04 14:03:44 @@ -1543,7 +1543,8 @@ dsyslog("activated name checking for initial read of video directory"); initial = false; } - if (Recordings == deletedRecordings || initial || !Recordings->GetByName(buffer)) { + cRecording *Recording = NULL; + if (Recordings == deletedRecordings || initial || !(Recording = Recordings->GetByName(buffer))) { cRecording *r = new cRecording(buffer); if (r->Name()) { r->NumFrames(); // initializes the numFrames member @@ -1557,6 +1558,8 @@ else delete r; } + else if (Recording) + Recording->ReadInfo(); StateKey.Remove(); } else
Ansonsten wird das info File auch für DeletedRecordings gelesen, was unnötig ist.
Ausserdem sollte nicht info->Read() direkt aufgerufen werden, sondern Recording->ReadInfo(), da sich ja u.U. auch andere Parameter geändert haben könnten.
Bitte damit nochmal testen.