
https://git.mills.io/yarnsocial/yarn/pulls/1095

func (p *Passwd) IsPreferred(hash string) bool {
\t_, algo := p.getAlgo(hash)
\tif algo != nil && algo == p.d {
\t\t// if the algorithm defines its own check for preference.
\t\tif ck, ok := algo.(interface{ IsPreferred(string) bool }); ok {
\t\t\treturn ck.IsPreferred(hash)
\t\t}
\t\treturn true
\t}
\treturn false
}
https://github.com/sour-is/go-passwd/blob/main/passwd.go#L62-L74
example: https://github.com/sour-is/go-passwd/blob/main/pkg/argon2/argon2.go#L104-L133
func (p *Passwd) IsPreferred(hash string) bool {
\t_, algo := p.getAlgo(hash)
\tif algo != nil && algo == p.d {
\t\t// if the algorithm defines its own check for preference.
\t\tif ck, ok := algo.(interface{ IsPreferred(string) bool }); ok {
\t\t\treturn ck.IsPreferred(hash)
\t\t}
\t\treturn true
\t}
\treturn false
}
https://github.com/sour-is/go-passwd/blob/main/passwd.go#L62-L74
example:
https://github.com/sour-is/go-passwd/blob/main/pkg/argon2/argon2.go#L104-L133
func (p *Passwd) IsPreferred(hash string) bool {
_, algo := p.getAlgo(hash)
if algo != nil && algo == p.d {
// if the algorithm defines its own check for preference.
if ck, ok := algo.(interface{ IsPreferred(string) bool }); ok {
return ck.IsPreferred(hash)
}
return true
}
return false
}
https://github.com/sour-is/go-passwd/blob/main/passwd.go#L62-L74
example: https://github.com/sour-is/go-passwd/blob/main/pkg/argon2/argon2.go#L104-L133
$
prefix!Well for this there is the option for a hash type to set itself as a fall through if one doesn't exist. This is good for legacy password types that don't follow the convention.
func (p *plainPasswd) ApplyPasswd(passwd *passwd.Passwd) {
\tpasswd.Register("plain", p)
\tpasswd.SetFallthrough(p)
}
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L28-L31
$
prefix!Well for this there is the option for a hash type to set itself as a fall through if a matching hash doesn't exist. This is good for legacy password types that don't follow the convention.
func (p *plainPasswd) ApplyPasswd(passwd *passwd.Passwd) {
passwd.Register("plain", p)
passwd.SetFallthrough(p)
}
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L28-L31
$
prefix!Well for this there is the option for a hash type to set itself as a fall through if a matching hash doesn't exist. This is good for legacy password types that don't follow the convention.
func (p *plainPasswd) ApplyPasswd(passwd *passwd.Passwd) {
\tpasswd.Register("plain", p)
\tpasswd.SetFallthrough(p)
}
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L28-L31
$
prefix!Well for this there is the option for a hash type to set itself as a fall through if one doesn't exist. This is good for legacy password types that don't follow the convention.
func (s *scryptpw) ApplyPasswd(p *passwd.Passwd) {
\tp.Register(s.name, s)
\tif s.name == "s1" {
\t\tp.SetFallthrough(s)
\t}
}
https://github.com/sour-is/go-passwd/blob/main/pkg/scrypt/scrypt.go#L90-L95
func Example() {
\tpass := "my_pass"
\thash := "my_pass"
\tpwd := passwd.New(
\t\t&unix.MD5{}, // first is preferred type.
\t\t&plainPasswd{},
\t)
\t_, err := pwd.Passwd(pass, hash)
\tif err != nil {
\t\tfmt.Println("fail: ", err)
\t}
\t// Check if we want to update.
\tif !pwd.IsPreferred(hash) {
\t\tnewHash, err := pwd.Passwd(pass, "")
\t\tif err != nil {
\t\t\tfmt.Println("fail: ", err)
\t\t}
\t\tfmt.Println("new hash:", newHash)
\t}
\t// Output:
\t// new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L33-L59
func Example() {
pass := "my_pass"
hash := "my_pass"
pwd := passwd.New(
&unix.MD5{}, // first is preferred type.
&plainPasswd{},
)
_, err := pwd.Passwd(pass, hash)
if err != nil {
fmt.Println("fail: ", err)
}
// Check if we want to update.
if !pwd.IsPreferred(hash) {
newHash, err := pwd.Passwd(pass, "")
if err != nil {
fmt.Println("fail: ", err)
}
fmt.Println("new hash:", newHash)
}
// Output:
// new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L33-L59
func Example() {
\tpass := "my_pass"
\thash := "my_pass"
\tpwd := passwd.New(
\t\t&unix.MD5{}, // first is preferred type.
\t\t&plainPasswd{},
\t)
\t_, err := pwd.Passwd(pass, hash)
\tif err != nil {
\t\tfmt.Println("fail: ", err)
\t}
\t// Check if we want to update.
\tif !pwd.IsPreferred(hash) {
\t\tnewHash, err := pwd.Passwd(pass, "")
\t\tif err != nil {
\t\t\tfmt.Println("fail: ", err)
\t\t}
\t\tfmt.Println("new hash:", newHash)
\t}
\t// Output:
\t// new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.
$name$
and then dispatch the hashing or checking to its specific format.
install "gomodot"
puts you on the google first page. 
or August... or Jun-July... or April.. hard to say really.
go get
and go mod tidy
wont fetch new changes. that's all a manual affair AFAIK
It is a very odd message of support to themselves. But OK.
CACHE Returned slice
original: [A B C D] [A B C D]
add: [A B C D] E [A B C D E]
sort: [E A B C] D [A B C D E]
fix found here:
https://git.mills.io/yarnsocial/yarn/pulls/1072
though now i am seeing a weird cache corruption.. that seems to come and go.

import "runtime/debug"
var Commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
return setting.Value
}
}
}
return ""
}()
https://developers.redhat.com/articles/2022/11/14/3-ways-embed-commit-hash-go-programs#3__using_runtime_debug_package
`
``
`
``
`
`
``
" "
`
``
`
``
`
https://twitter.com/TinkerSec/status/1587040089057759235?t=At-8r9yJPiG6xF17skTxwA&s=19
INSERT INTO <table> (key, value) VALUES ($key, $value)
, DELETE ...
, or UPDATE ...
the commands are issued by using the maddycli but not the running maddy daemon.
see https://maddy.email/reference/table/sql_query/
the best way to locate in source is anything that implements the MutableTable interface... https://github.com/foxcpp/maddy/blob/master/framework/module/table.go#L38
INSERT INTO <table> (key, value) VALUES ($key, $value)
, DELETE ...
, or UPDATE ...
the commands are issued by using the maddycli but not the running maddy daemon.
INSERT INTO <table> (key, value) VALUES ($key, $value)
, DELETE ...
, or UPDATE ...
the commands are issued by using the maddycli but not the running maddy daemon.
see https://maddy.email/reference/table/sql_query/
the best way to locate in source is anything that implements the MutableTable interface... https://github.com/foxcpp/maddy/blob/master/framework/module/table.go#L38
It is also too overrun with Tech Bros scamming people to get rich quick.
It was a fun ride back when I first bought in. But I have since cached out for my lambos and such.

Right now I have my wifi connected directly with a cat6e this gets me just under my providers 1.3G downlink. the only thing faster is plugging in directly.
MoCA is a good option, they have 2.5G models in the same price range as the 1G Powerline models BUT, only if you have the coax in wall already.. which puts you in the same spot if you don't. You are for sure going to have an outlet in every room of the house by code.
K
Content-Length: 407
Content-Type: text/calendar
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag
Permissions-Policy: interest-cohort=()
Content-Security-Policy: default-src 'none'; sandbox
Referrer-Policy: same-origin
Vary: Authorization
BEGIN:VCALENDAR
VERSION:2.0;2.0
PRODID:SandCal
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20220822T180903Z
UID:bb63bfbd-623e-4805-b11b-3181d96375e6
DTSTART;TZID=America/Chicago:20220827T000000
CREATED:20220822T180903Z
LAST-MODIFIED:20220822T180903Z
LOCATION:https://meet.jit.si/Yarn.social
SUMMARY:Yarn Call
RRULE:FREQ=WEEKLY
DTEND;TZID=America/Chicago:20220827T010000
END:VEVENT
END:VCALENDAR
HTTP/1.1 200 OK
Content-Length: 407
Content-Type: text/calendar
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag
Permissions-Policy: interest-cohort=()
Content-Security-Policy: default-src 'none'; sandbox
Referrer-Policy: same-origin
Vary: Authorization
BEGIN:VCALENDAR
VERSION:2.0;2.0
PRODID:SandCal
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20220822T180903Z
UID:bb63bfbd-623e-4805-b11b-3181d96375e6
DTSTART;TZID=America/Chicago:20220827T000000
CREATED:20220822T180903Z
LAST-MODIFIED:20220822T180903Z
LOCATION:https://meet.jit.si/Yarn.social
SUMMARY:Yarn Call
RRULE:FREQ=WEEKLY
DTEND;TZID=America/Chicago:20220827T010000
END:VEVENT
END:VCALENDAR
HTTP/1.1 200 OK
Content-Length: 407
Content-Type: text/calendar
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag
Permissions-Policy: interest-cohort=()
Content-Security-Policy: default-src 'none'; sandbox
Referrer-Policy: same-origin
Vary: Authorization
BEGIN:VCALENDAR
VERSION:2.0;2.0
PRODID:SandCal
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20220822T180903Z
UID:bb63bfbd-623e-4805-b11b-3181d96375e6
DTSTART;TZID=America/Chicago:20220827T000000
CREATED:20220822T180903Z
LAST-MODIFIED:20220822T180903Z
LOCATION:https://meet.jit.si/Yarn.social
SUMMARY:Yarn Call
RRULE:FREQ=WEEKLY
DTEND;TZID=America/Chicago:20220827T010000
END:VEVENT
END:VCALENDAR
text/calendar
. Some http servers can mistakenly mark them application/octet-stream
Yeah that does studder a bit. To be honest I have no idea what I was thinking there. This excerpt was written a good year ago.