mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-17 14:37:02 +00:00
chasquid-util: Add domaininfo-remove
This patch adds a chasquid-util subcommand to remove a domain information entry. The main use case is to manually allow a security level downgrade, after performing manual verification.
This commit is contained in:
@@ -8,6 +8,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
@@ -33,6 +34,7 @@ Usage:
|
|||||||
chasquid-util [options] authenticate <username> [--password=<password>]
|
chasquid-util [options] authenticate <username> [--password=<password>]
|
||||||
chasquid-util [options] check-userdb <domain>
|
chasquid-util [options] check-userdb <domain>
|
||||||
chasquid-util [options] aliases-resolve <address>
|
chasquid-util [options] aliases-resolve <address>
|
||||||
|
chasquid-util [options] domaininfo-remove <domain>
|
||||||
chasquid-util [options] print-config
|
chasquid-util [options] print-config
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@@ -56,12 +58,13 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
commands := map[string]func(){
|
commands := map[string]func(){
|
||||||
"user-add": userAdd,
|
"user-add": userAdd,
|
||||||
"user-remove": userRemove,
|
"user-remove": userRemove,
|
||||||
"authenticate": authenticate,
|
"authenticate": authenticate,
|
||||||
"check-userdb": checkUserDB,
|
"check-userdb": checkUserDB,
|
||||||
"aliases-resolve": aliasesResolve,
|
"aliases-resolve": aliasesResolve,
|
||||||
"print-config": printConfig,
|
"print-config": printConfig,
|
||||||
|
"domaininfo-remove": domaininfoRemove,
|
||||||
}
|
}
|
||||||
|
|
||||||
for cmd, f := range commands {
|
for cmd, f := range commands {
|
||||||
@@ -247,3 +250,22 @@ func printConfig() {
|
|||||||
|
|
||||||
fmt.Println(proto.MarshalTextString(conf))
|
fmt.Println(proto.MarshalTextString(conf))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// chasquid-util domaininfo-remove <domain>
|
||||||
|
func domaininfoRemove() {
|
||||||
|
domain := args["<domain>"].(string)
|
||||||
|
|
||||||
|
conf, err := config.Load(configDir + "/chasquid.conf")
|
||||||
|
if err != nil {
|
||||||
|
Fatalf("Error reading config")
|
||||||
|
}
|
||||||
|
|
||||||
|
// File for the corresponding domain.
|
||||||
|
// Note this is making some assumptions about the data layout and
|
||||||
|
// protoio's storage structure, so it will need adjustment if they change.
|
||||||
|
file := conf.DataDir + "/domaininfo/s:" + url.QueryEscape(domain)
|
||||||
|
err = os.Remove(file)
|
||||||
|
if err != nil {
|
||||||
|
Fatalf("Error removing file: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ function check_userdb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mkdir -p .config/domains/domain
|
mkdir -p .config/domains/domain/ .data/domaininfo
|
||||||
touch .config/chasquid.conf
|
rm -f .config/chasquid.conf
|
||||||
|
echo 'data_dir: ".data"' >> .config/chasquid.conf
|
||||||
|
|
||||||
if ! r print-config > /dev/null; then
|
if ! r print-config > /dev/null; then
|
||||||
echo print-config failed
|
echo print-config failed
|
||||||
@@ -54,6 +55,16 @@ if r authenticate user@domain --password=passwd > /dev/null; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
touch '.data/domaininfo/s:dom%C3%A1in'
|
||||||
|
if ! r domaininfo-remove domáin; then
|
||||||
|
echo domaininfo-remove failed
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -f '.data/domaininfo/s:dom%C3%A1in' ]; then
|
||||||
|
echo domaininfo-remove did not remove file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "alias: user@somewhere" > .config/domains/domain/aliases
|
echo "alias: user@somewhere" > .config/domains/domain/aliases
|
||||||
A=$(r aliases-resolve alias@domain | grep somewhere)
|
A=$(r aliases-resolve alias@domain | grep somewhere)
|
||||||
if [ "$A" != "(email) user@somewhere" ]; then
|
if [ "$A" != "(email) user@somewhere" ]; then
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "chasquid-util 1"
|
.IX Title "chasquid-util 1"
|
||||||
.TH chasquid-util 1 "2018-04-03" "" ""
|
.TH chasquid-util 1 "2018-05-20" "" ""
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
@@ -148,6 +148,8 @@ chasquid\-util \- chasquid management tool
|
|||||||
.PP
|
.PP
|
||||||
\&\fBchasquid-util\fR [\fIoptions\fR] aliases-resolve \fIaddr\fR
|
\&\fBchasquid-util\fR [\fIoptions\fR] aliases-resolve \fIaddr\fR
|
||||||
.PP
|
.PP
|
||||||
|
\&\fBchasquid-util\fR [\fIoptions\fR] domaininfo-remove \fIdomain\fR
|
||||||
|
.PP
|
||||||
\&\fBchasquid-util\fR [\fIoptions\fR] print-config
|
\&\fBchasquid-util\fR [\fIoptions\fR] print-config
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
.IX Header "DESCRIPTION"
|
.IX Header "DESCRIPTION"
|
||||||
@@ -169,6 +171,10 @@ Check the integrity of the domain's users database.
|
|||||||
.IP "\fBaliases-resolve\fR \fIaddr\fR" 8
|
.IP "\fBaliases-resolve\fR \fIaddr\fR" 8
|
||||||
.IX Item "aliases-resolve addr"
|
.IX Item "aliases-resolve addr"
|
||||||
Resolve the given address.
|
Resolve the given address.
|
||||||
|
.IP "\fBdomaininfo-remove\fR \fIdomain\fR" 8
|
||||||
|
.IX Item "domaininfo-remove domain"
|
||||||
|
Remove the domain information entry. This can be used to manually allow a
|
||||||
|
security level downgrade.
|
||||||
.IP "\fBprint-config\fR" 8
|
.IP "\fBprint-config\fR" 8
|
||||||
.IX Item "print-config"
|
.IX Item "print-config"
|
||||||
Parse and print the configuration in a human-readable way.
|
Parse and print the configuration in a human-readable way.
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ B<chasquid-util> [I<options>] check-userdb I<domain>
|
|||||||
|
|
||||||
B<chasquid-util> [I<options>] aliases-resolve I<addr>
|
B<chasquid-util> [I<options>] aliases-resolve I<addr>
|
||||||
|
|
||||||
|
B<chasquid-util> [I<options>] domaininfo-remove I<domain>
|
||||||
|
|
||||||
B<chasquid-util> [I<options>] print-config
|
B<chasquid-util> [I<options>] print-config
|
||||||
|
|
||||||
|
|
||||||
@@ -46,6 +48,11 @@ Check the integrity of the domain's users database.
|
|||||||
|
|
||||||
Resolve the given address.
|
Resolve the given address.
|
||||||
|
|
||||||
|
=item B<domaininfo-remove> I<domain>
|
||||||
|
|
||||||
|
Remove the domain information entry. This can be used to manually allow a
|
||||||
|
security level downgrade.
|
||||||
|
|
||||||
=item B<print-config>
|
=item B<print-config>
|
||||||
|
|
||||||
Parse and print the configuration in a human-readable way.
|
Parse and print the configuration in a human-readable way.
|
||||||
|
|||||||
Reference in New Issue
Block a user