aboutsummaryrefslogtreecommitdiffstats
path: root/daily-psk
diff options
context:
space:
mode:
Diffstat (limited to 'daily-psk')
-rw-r--r--daily-psk133
1 files changed, 62 insertions, 71 deletions
diff --git a/daily-psk b/daily-psk
index 236ca4f..d1fbf71 100644
--- a/daily-psk
+++ b/daily-psk
@@ -4,105 +4,96 @@
#
# update daily PSK (pre shared key)
-:global "identity";
-:global "daily-psk-match-comment";
+:global Identity;
+:global DailyPskMatchComment;
:global SendNotification;
-:local seen [ :toarray "" ];
+:local Seen [ :toarray "" ];
# return pseudo-random string for PSK
:local GeneratePSK do={
- :local date [ :tostr $1 ];
+ :local Date [ :tostr $1 ];
- :global "daily-psk-secrets";
+ :global DailyPskSecrets;
- :local months {
- "jan"; "feb"; "mar"; "apr"; "may"; "jun";
- "jul"; "aug"; "sep"; "oct"; "nov"; "dec"
- }
- :local monthtbl {
- 0; 3; 3; 6; 1; 4; 6; 2; 5; 0; 3; 5
- }
+ :local Months { "jan"; "feb"; "mar"; "apr"; "may"; "jun";
+ "jul"; "aug"; "sep"; "oct"; "nov"; "dec" };
+ :local MonthTbl { 0; 3; 3; 6; 1; 4; 6; 2; 5; 0; 3; 5 };
- :local monthstr [ :pick $date 0 3 ];
- :local month;
- :local day [ :pick $date 4 6 ];
- :local century [ :pick $date 7 9 ];
- :local year [ :pick $date 9 11 ];
+ :local MonthStr [ :pick $Date 0 3 ];
+ :local Month;
+ :local Day [ :pick $Date 4 6 ];
+ :local Century [ :pick $Date 7 9 ];
+ :local Year [ :pick $Date 9 11 ];
# get numeric value for month
- :for mindex from=0 to=[ :len $months ] do={
- :if ([ :pick $months $mindex ] = $monthstr) do={
- :set month $mindex;
+ :for MIndex from=0 to=[ :len $Months ] do={
+ :if ([ :pick $Months $MIndex ] = $MonthStr) do={
+ :set Month $MIndex;
}
}
# calculate day of week
- :local sum 0;
- :set sum ($sum + (2 * (3 - ($century - (($century / 4) * 4)))));
- :set sum ($sum + ($year / 4));
- :set sum ($sum + $year + $day);
- :set sum ($sum + $month);
- :set sum ($sum - (($sum / 7) * 7));
-
- :local return ([ :pick [ :pick $"daily-psk-secrets" 0 ] ($day - 1) ] . \
- [ :pick [ :pick $"daily-psk-secrets" 1 ] $month ] . \
- [ :pick [ :pick $"daily-psk-secrets" 2 ] $sum ]);
-
- :return $return;
+ :local Sum 0;
+ :set Sum ($Sum + (2 * (3 - ($Century - (($Century / 4) * 4)))));
+ :set Sum ($Sum + ($Year / 4));
+ :set Sum ($Sum + $Year + $Day);
+ :set Sum ($Sum + $Month);
+ :set Sum ($Sum - (($Sum / 7) * 7));
+
+ :local Return ([ :pick [ :pick $DailyPskSecrets 0 ] ($Day - 1) ] . \
+ [ :pick [ :pick $DailyPskSecrets 1 ] $Month ] . \
+ [ :pick [ :pick $DailyPskSecrets 2 ] $Sum ]);
+
+ :return $Return;
}
-:local date [ / system clock get date ];
-:local newpsk [ $GeneratePSK $date ];
-
-:foreach acclist in=[ / interface wireless access-list find where comment~$"daily-psk-match-comment" ] do={
- :local intname [ / interface wireless access-list get $acclist interface ];
- :local interface [ / interface wireless find where name=$intname disabled=no ];
- :local ssid [ / interface wireless get $intname ssid ];
- :local oldpsk [ / interface wireless access-list get $acclist private-pre-shared-key ];
- :local skip 0;
-
- :if ($newpsk != $oldpsk) do={
- :log info ("Updating daily PSK for " . $intname . " to " . $newpsk . " (was " . $oldpsk . ")");
- / interface wireless access-list set $acclist private-pre-shared-key=$newpsk;
-
- :if ([ :len $interface ] = 1) do={
- :foreach "seen-ssid" in=$seen do={
- :if ($"seen-ssid" = $ssid) do={
- :log debug ("Already sent a mail for SSID " . $ssid . ", skipping.");
- :set skip 1;
+:local Date [ / system clock get date ];
+:local NewPsk [ $GeneratePSK $Date ];
+
+:foreach AccList in=[ / interface wireless access-list find where comment~$DailyPskMatchComment ] do={
+ :local IntName [ / interface wireless access-list get $AccList interface ];
+ :local Interface [ / interface wireless find where name=$IntName disabled=no ];
+ :local Ssid [ / interface wireless get $IntName ssid ];
+ :local OldPsk [ / interface wireless access-list get $AccList private-pre-shared-key ];
+ :local Skip 0;
+
+ :if ($NewPsk != $OldPsk) do={
+ :log info ("Updating daily PSK for " . $IntName . " to " . $NewPsk . " (was " . $OldPsk . ")");
+ / interface wireless access-list set $AccList private-pre-shared-key=$NewPsk;
+
+ :if ([ :len $Interface ] = 1) do={
+ :foreach SeenSsid in=$Seen do={
+ :if ($SeenSsid = $Ssid) do={
+ :log debug ("Already sent a mail for SSID " . $Ssid . ", skipping.");
+ :set Skip 1;
}
}
- :if ($skip = 0) do={
- :set seen ( $seen, $ssid );
+ :if ($Skip = 0) do={
+ :set Seen ($Seen, $Ssid);
- :local host "www.eworm.de"
- :local srcpath ("/cgi-bin/cqrlogo-wifi.cgi" . \
- "?scale=8" . \
- "&level=1" . \
- "&ssid=" . $ssid . \
- "&pass=" . $newpsk);
- :local attach "qrcode-daily.png";
+ :local Url ("https://www.eworm.de/cgi-bin/cqrlogo-wifi.cgi" . \
+ "?scale=8&level=1&ssid=" . $Ssid . "&pass=" . $NewPsk);
+ :local Attach "qrcode-daily.png";
:do {
- / tool fetch mode=https check-certificate=yes-without-crl address=$host \
- host=$host src-path=$srcpath dst-path=$attach;
+ / tool fetch mode=https check-certificate=yes-without-crl \
+ $Url dst-path=$Attach;
} on-error={
- :set attach "";
+ :set Attach "";
}
- $SendNotification ("daily PSK " . $ssid) \
- ("This is the daily PSK on " . $identity . ":\n\n" . \
- "SSID: " . $ssid . "\n" . \
- "PSK: " . $newpsk . "\n" . \
- "Date: " . [ / system clock get date ] . "\n\n" . \
- "https://" . $host . $srcpath) \
- $attach;
+ $SendNotification ("daily PSK " . $Ssid) \
+ ("This is the daily PSK on " . $Identity . ":\n\n" . \
+ "SSID: " . $Ssid . "\n" . \
+ "PSK: " . $NewPsk . "\n" . \
+ "Date: " . $Date . "\n\n" . \
+ $Url) $Attach;
}
} else={
- :log debug ("Missing active interface " . $intname . " for access list entry.");
+ :log debug ("Missing active interface " . $IntName . " for access list entry.");
}
}
}