annotate feeds.tcl @ 663:8bde8f798188

feeds: Use command matching helpers.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 20 Feb 2021 17:35:40 +0200
parents bb6aea76cdb4
children 79b5d8944eea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
1 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 #
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
3 # FeedCheck v2.0 by Matti 'ccr' Hamalainen <ccr@tnsp.org>
578
14dfb925a64a Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 566
diff changeset
4 # (C) Copyright 2008-2021 Tecnic Software productions (TNSP)
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 #
265
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
6 # Requires fetch_feeds.tcl to be run as a cronjob, for example
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
7 # 15 * * * * /absolute/path/to/fetch_feeds.tcl
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 #
145
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
9 # See also create_feeds_db.tcl OR convert_feeds_db.tcl, as you will
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
10 # need to either create a SQLite3 database or convert old text flat
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
11 # file to SQLite3.
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
12 #
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 # This script is freely distributable under GNU GPL (version 2) license.
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 #
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
15 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16
265
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
17 ### The configuration should be in config.feeds in same directory
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
18 ### as this script. Or change the line below to point where ever
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
19 ### you wish. See "config.feeds.example" for an example config file.
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
20 source [file dirname [info script]]/config.feeds
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
422
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
22 ### Required utillib.tcl
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
23 source [file dirname [info script]]/utillib.tcl
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
24
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
26 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 # No need to look below this line
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
28 ##########################################################################
423
44c9128097cd feeds: Remember to require sqlite3 package.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
29 package require sqlite3
44c9128097cd feeds: Remember to require sqlite3 package.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
30
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 set feeds_name "FeedCheck"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
32 set feeds_message "$feeds_name v2.0 by ccr/TNSP"
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
35 # ------------------------------------------------------------------------
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
36 ### Utility functions
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 proc feeds_log {umsg} {
550
85fe3bc36307 Rename *_logmsg settings to *_log_enable.
Matti Hamalainen <ccr@tnsp.org>
parents: 549
diff changeset
38 global feeds_log_enable feeds_name
85fe3bc36307 Rename *_logmsg settings to *_log_enable.
Matti Hamalainen <ccr@tnsp.org>
parents: 549
diff changeset
39 if {$feeds_log_enable != 0} {
595
7f7d8048ecb5 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 589
diff changeset
40 putlog "${feeds_name}: $umsg"
526
eb9921ae5c7a feeds: Add feeds_logmsg setting.
Matti Hamalainen <ccr@tnsp.org>
parents: 523
diff changeset
41 }
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43
534
7512889f7b72 feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 526
diff changeset
44
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
45 proc feeds_qm {uid} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
46 global feeds_messages
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
47
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
48 if {[info exists feeds_messages($uid)]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
49 return $feeds_messages($uid)
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
50 } else {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
51 return $uid
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
56 proc feeds_smsg {apublic anick achan amsg {aargs {}}} {
564
f85b5c572292 feeds: Add configuration setting feeds_cmd_name.
Matti Hamalainen <ccr@tnsp.org>
parents: 557
diff changeset
57 global feeds_preferredmsg feeds_cmd_name
f85b5c572292 feeds: Add configuration setting feeds_cmd_name.
Matti Hamalainen <ccr@tnsp.org>
parents: 557
diff changeset
58 set amsg [string map [list "@cmd@" $feeds_cmd_name] $amsg]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
59 utl_msg_args $feeds_preferredmsg $apublic $anick $achan $amsg $aargs
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
60 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
61
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
62
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
63 proc feeds_msg {apublic anick achan aid {aargs {}}} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
64 feeds_smsg $apublic $anick $achan [feeds_qm $aid] $aargs
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
65 }
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
66
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
67
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
68 proc feeds_cmd_match { uid ustr } {
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
69 global feeds_commands
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
70 return [utl_cmd_match feeds_commands $uid $ustr]
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
71 }
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
72
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
73
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
74 # ------------------------------------------------------------------------
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
75 proc feeds_check_do {uforce upublic unick uchan} {
608
179fc8150090 feeds: Fix variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 605
diff changeset
76 global feeds_db_file feeds_dbh feeds_sync_limit feeds_channels
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
77
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
78 # Get old time, if it exists
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 set oldtime 0
608
179fc8150090 feeds: Fix variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 605
diff changeset
80 if {![catch {set ufile [open "${feeds_db_file}.time" r 0600]} uerrmsg]} {
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 gets $ufile oldtime
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 close $ufile
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 } else {
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
84 feeds_log "Could not open timefile for reading: ${uerrmsg}"
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
85 set oldtime [clock seconds]
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 }
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
87
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
88 # Check for new items
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
89 set nresults [feeds_dbh onecolumn "SELECT COUNT(*) FROM feeds WHERE utime > $oldtime"]
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
90
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
91 if {$nresults > $feeds_sync_limit} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
92 # Too many items, don't spam the channels
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
93 feeds_log "${nresults} new entries since [utl_ctime $oldtime], probably unsynchronized. Ignoring."
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
94 if {$uforce} {
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
95 feeds_msg $upublic $unick $uchan "chk_unsync_entries" [list $nresults [utl_ctime $oldtime]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
96 }
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
97 } elseif {$nresults > 0 || $uforce} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
98 # Spam the channels with new items
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
99 feeds_log "${nresults} new entries since [utl_ctime $oldtime] .."
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
100
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
101 if {$uforce} {
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
102 feeds_msg $upublic $unick $uchan "chk_new_entries" [list $nresults [utl_ctime $oldtime] $oldtime]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
103 }
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
104
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
105 set usql "SELECT feed AS ufeed, title AS utitle, url AS uurl, utime AS utime FROM feeds WHERE utime > $oldtime ORDER BY utime ASC"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
106 feeds_dbh eval $usql {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
107 # Message all relevant channels
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
108 foreach {qchan ufilter} [array get feeds_channels] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
109 foreach umatch [split $ufilter "|"] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
110 if {[string match -nocase $umatch $ufeed]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
111 feeds_msg 1 "NULL" $qchan "chk_entry" [list $ufeed $utitle $uurl [utl_ctime $utime]]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
112 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
113 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
114 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
115 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
116 }
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 423
diff changeset
117
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
118 if {$nresults > 0} {
605
1d39db72e190 feeds: Rename SQLite3 database filename configuration variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 596
diff changeset
119 if {![catch {set ufile [open "${feeds_db_file}.time" w 0600]} uerrmsg]} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
120 puts $ufile [clock seconds]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
121 close $ufile
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
122 } else {
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
123 feeds_log "Could not write timefile: ${uerrmsg}"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
124 }
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127
534
7512889f7b72 feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 526
diff changeset
128
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129 proc feeds_exec {} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
130 global feeds_check_period feeds_running
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 423
diff changeset
131
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
132 feeds_check_do 0 0 "NULL" "NULL"
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
133
144
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
134 set feeds_running [clock seconds]
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
135 timer $feeds_check_period feeds_exec
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137
146
7106dd8db4de Improve entity parsing, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 145
diff changeset
138
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
139 proc feeds_validate_name {upublic unick uchan upattern ufname} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
140 global feeds_dbh
596
b524a6e4be63 feeds: Slight cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 595
diff changeset
141 upvar $ufname afname
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
142
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
143 # Check value
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
144 if {$upattern == ""} {
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
145 set afname ""
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
146 return 1
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
147 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
148
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
149 # Check if there are multiple matches
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
150 set usql "SELECT COUNT(DISTINCT(feed)) AS nfeeds,feed AS afname FROM feeds WHERE feed LIKE '%[utl_escape $upattern]%'"
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
151 feeds_dbh eval $usql {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
152
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
153 if {$nfeeds > 1} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
154 feeds_msg $upublic $unick $uchan "multiple_matches" [list $upattern]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
155 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
156 } elseif {$nfeeds == 0} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
157 feeds_msg $upublic $unick $uchan "no_matches" [list $upattern]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
158 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
159 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
160 return 1
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
161 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
162 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
163
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
164
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
165 # ------------------------------------------------------------------------
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
166 proc feeds_cmd {unick uhost uhand uchan uargs upublic} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
167 global feeds_dbh feeds_messages feeds_history_limit
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
168
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
169 # Check and handle arguments
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
170 set rarglist [::textutil::split::splitx $uargs {\s+}]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
171 set rcmd [lindex $rarglist 0]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
172 set rargs [lrange $rarglist 1 end]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
173
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
174 if {[feeds_cmd_match "help" $rcmd]} {
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
175 # Show help
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
176 foreach ukey $feeds_messages(help_full) {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
177 feeds_msg $upublic $unick $uchan $ukey
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
178 }
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
179 } elseif {[feeds_cmd_match "latest" $rcmd]} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
180 # Show latest entry or latest entry of specified feed
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
181 set ufound 0
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
182 set utext [string tolower [join $rargs " "]]
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
183
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
184 # Validate feed name
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
185 if {![feeds_validate_name $upublic $unick $uchan $utext fname]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
186 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
187 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
188
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
189 set usql "SELECT url AS uurl, feed AS ufeed, title AS utitle, utime AS utime FROM feeds WHERE feed LIKE '%[utl_escape $fname]%' ORDER BY utime DESC LIMIT 1"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
190 feeds_dbh eval $usql {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
191 feeds_msg $upublic $unick $uchan "search_latest_feed" [list $ufeed [utl_ctime $utime] $utitle $uurl]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
192 set ufound 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
193 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
194
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
195 if {$ufound == 0} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
196 feeds_msg $upublic $unick $uchan "search_no_matches" [list $utext]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
197 }
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
198 } elseif {[feeds_cmd_match "force" $rcmd]} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
199 # Force check for new entries
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
200 if {![matchattr $uhand n]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
201 feeds_msg $upublic $unick $uchan "no_access"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
202 }
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
203
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
204 feeds_check_do 1 $upublic $unick $uchan
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
205 } elseif {[feeds_cmd_match "list" $rcmd]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
206 # List feeds
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
207 set uarg [lindex $rargs 0]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
208
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
209 if {[feeds_cmd_match "all" $uarg]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
210 # Long list
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
211 set utext [string tolower [join [lrange $rargs 1 end] " "]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
212
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
213 if {$upublic && ![matchattr $uhand n]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
214 feeds_msg $upublic $unick $uchan "feed_list_long_denied" [list $rcmd $utext]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
215 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
216 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
217
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
218 set ulistitem [feeds_qm "feed_list_item_long"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
219 set ulistsep [feeds_qm "feed_list_sep_long"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
220
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
221 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds WHERE feed LIKE '%[utl_escape $utext]%' GROUP BY feed"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
222 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
223
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
224 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
225 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
226 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
227
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
228 if {$utext != ""} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
229 feeds_msg $upublic $unick $uchan "feed_list_filter" [list $utext [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
230 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
231 feeds_msg $upublic $unick $uchan "feed_list_all" [list [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
232 }
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
233
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
234 } elseif {$uarg != ""} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
235 # List feeds with a name filter
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
236 set utext [string tolower [join $rargs " "]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
237
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
238 set ulistitem [feeds_qm "feed_list_item_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
239 set ulistsep [feeds_qm "feed_list_sep_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
240
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
241 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds WHERE feed LIKE '%[utl_escape $utext]%' GROUP BY feed"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
242 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
243
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
244 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
245 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
246 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
247
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
248 feeds_msg $upublic $unick $uchan "feed_list_filter" [list $utext [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
249 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
250 # List any active feeds
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
251 set uold [expr [clock seconds] - 60*60*24*365]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
252
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
253 set ulistitem [feeds_qm "feed_list_item_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
254 set ulistsep [feeds_qm "feed_list_sep_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
255
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
256 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds GROUP BY feed HAVING ulatest >= $uold"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
257 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
258
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
259 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
260 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
261 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
262
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
263 feeds_msg $upublic $unick $uchan "feed_list_active" [list [utl_ctime $uold] [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
264 }
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
265
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
266 } elseif {[feeds_cmd_match "history" $rcmd]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
267 # Show history of a feed
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
268 if {[llength $rarglist] < 2} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
269 feeds_msg $upublic $unick $uchan "help_history"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
270 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
271 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
272
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
273 set utext [string tolower [join $rargs " "]]
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
274 if {$upublic && ![matchattr $uhand n]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
275 feeds_msg $upublic $unick $uchan "feed_list_long_denied" [list $rcmd $utext]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
276 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
277 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
278
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
279 # Validate feed name
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
280 if {![feeds_validate_name $upublic $unick $uchan $utext fname]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
281 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
282 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
283
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
284 set ulistitem [feeds_qm "history_list_item"]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
285 set ulistsep [feeds_qm "history_list_sep"]
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
286 set usql "SELECT url AS uurl, title AS utitle, utime FROM feeds WHERE feed='[utl_escape $fname]' ORDER BY utime DESC LIMIT ${feeds_history_limit}"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
287 set ulist {}
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
288
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
289 feeds_dbh eval $usql {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
290 lappend ulist [utl_str_map_values $ulistitem [list $uurl $utitle [utl_ctime $utime]]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
291 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
292
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
293 feeds_msg $upublic $unick $uchan "history_list" [list $fname [join $ulist $ulistsep]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
294 } else {
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
295 # Help/usage
566
4cd72a178cbf feeds: More work and bugfixing.
Matti Hamalainen <ccr@tnsp.org>
parents: 565
diff changeset
296 feeds_msg $upublic $unick $uchan "help_short"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
297 }
663
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
298
8bde8f798188 feeds: Use command matching helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 662
diff changeset
299 return 0
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
300 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
301
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
302
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
303 #-------------------------------------------------------------------------
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
304 proc feeds_cmd_pub {unick uhost uhand uchan uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
305 global feeds_channels
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
306
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
307 foreach {ukey uvalue} [array get feeds_channels] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
308 if {[string match $ukey $uchan]} {
662
bb6aea76cdb4 feeds: Fix binds to actually work.
Matti Hamalainen <ccr@tnsp.org>
parents: 608
diff changeset
309 feeds_cmd $unick $uhost $uhand $uchan $uargs 1
bb6aea76cdb4 feeds: Fix binds to actually work.
Matti Hamalainen <ccr@tnsp.org>
parents: 608
diff changeset
310 return 1
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
311 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
312 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
313
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
314 return 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
315 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
316
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
317 proc feeds_cmd_msg {unick uhost uhand uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
318 feeds_cmd $unick $uhost $uhand "PRIV" $uargs 0
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
319 return 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
320 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
321
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
322
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
323 #-------------------------------------------------------------------------
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
324 # Script initialization
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
325 #-------------------------------------------------------------------------
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
326 putlog "$feeds_message"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
327
605
1d39db72e190 feeds: Rename SQLite3 database filename configuration variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 596
diff changeset
328 if {[catch {sqlite3 feeds_dbh $feeds_db_file} uerrmsg]} {
1d39db72e190 feeds: Rename SQLite3 database filename configuration variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 596
diff changeset
329 putlog "Could not open SQLite3 database '${feeds_db_file}': ${uerrmsg}"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
330 exit 2
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
331 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
332
144
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
333 if {[info exists feeds_running]} {
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
334 set feeds_last [expr [clock seconds] - $feeds_running]
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
335 } else {
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
336 set feeds_last -1
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
337 }
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
338
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
339 if {$feeds_last < 0 || $feeds_last > [expr $feeds_check_period * 60]} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
340 putlog " - Starting timed feed check."
154
7a549487fba3 feeds: Cleanups, minor bugfix in feed update checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 146
diff changeset
341 feeds_exec
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
342 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
343
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
344 putlog " - Executing feeds_init()"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
345 feeds_init
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
346 putlog " - feeds_init() done."
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
347
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
348 # end of script