forked from tildetown/town
		
	stuff. WIP tma tool
This commit is contained in:
		
							parent
							
								
									5082290d15
								
							
						
					
					
						commit
						83b9dd8f21
					
				
							
								
								
									
										10
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Makefile
									
									
									
									
									
								
							| @ -1,6 +1,7 @@ | |||||||
| all: cmds external | all: cmds external | ||||||
| 
 | 
 | ||||||
| install: all | install: all | ||||||
|  | 	cp bin/tma /town/bin/ | ||||||
| 	cp bin/launcher /usr/local/bin/town | 	cp bin/launcher /usr/local/bin/town | ||||||
| 	cp bin/stats /town/bin/ | 	cp bin/stats /town/bin/ | ||||||
| 	cp bin/contrib /town/bin/ | 	cp bin/contrib /town/bin/ | ||||||
| @ -12,6 +13,7 @@ install: all | |||||||
| 	cp bin/help /town/bin/external/ | 	cp bin/help /town/bin/external/ | ||||||
| 	cp bin/welcome /town/bin/external/ | 	cp bin/welcome /town/bin/external/ | ||||||
| 	cp bin/signup /town/bin/external/ | 	cp bin/signup /town/bin/external/ | ||||||
|  | 	cp bin/review /town/bin/ | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	rm -rf bin | 	rm -rf bin | ||||||
| @ -41,7 +43,7 @@ bin/emailtouser: external/cmd/helpers/emailtouser/main.go bin | |||||||
| bin/registeruser: external/cmd/helpers/registeruser/main.go bin | bin/registeruser: external/cmd/helpers/registeruser/main.go bin | ||||||
| 	go build -o bin/registeruser ./external/cmd/helpers/registeruser | 	go build -o bin/registeruser ./external/cmd/helpers/registeruser | ||||||
| 
 | 
 | ||||||
| cmds: bin/launcher bin/stats bin/contrib bin/request | cmds: bin/launcher bin/stats bin/contrib bin/request bin/review bin/tma | ||||||
| 
 | 
 | ||||||
| bin/launcher: cmd/launcher/main.go bin | bin/launcher: cmd/launcher/main.go bin | ||||||
| 	go build -o bin/launcher ./cmd/launcher | 	go build -o bin/launcher ./cmd/launcher | ||||||
| @ -55,5 +57,11 @@ bin/contrib: cmd/contrib/main.go bin | |||||||
| bin/request: cmd/request/main.go bin | bin/request: cmd/request/main.go bin | ||||||
| 	go build -o bin/request ./cmd/request | 	go build -o bin/request ./cmd/request | ||||||
| 
 | 
 | ||||||
|  | bin/review: cmd/review/main.go bin | ||||||
|  | 	go build -o bin/review ./cmd/review | ||||||
|  | 
 | ||||||
|  | bin/tma: cmd/tma/main.go bin | ||||||
|  | 	go build -o bin/tma ./cmd/tma | ||||||
|  | 
 | ||||||
| bin: | bin: | ||||||
| 	mkdir -p bin | 	mkdir -p bin | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"os" | 	"os" | ||||||
|  | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"git.tilde.town/tildetown/town/email" | 	"git.tilde.town/tildetown/town/email" | ||||||
| 	"git.tilde.town/tildetown/town/invites" | 	"git.tilde.town/tildetown/town/invites" | ||||||
| @ -44,7 +45,7 @@ func loadPassword() (string, error) { | |||||||
| 		return "", errors.New("smtp password file was empty") | 		return "", errors.New("smtp password file was empty") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return string(pw[0:n]), nil | 	return strings.TrimSpace(string(pw[0:n])), nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func sendInviteEmail(invite invites.Invite) error { | func sendInviteEmail(invite invites.Invite) error { | ||||||
|  | |||||||
							
								
								
									
										101
									
								
								cmd/tma/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								cmd/tma/main.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | |||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"errors" | ||||||
|  | 	"fmt" | ||||||
|  | 	"os" | ||||||
|  | 	"strconv" | ||||||
|  | 	"time" | ||||||
|  | 
 | ||||||
|  | 	"database/sql" | ||||||
|  | 
 | ||||||
|  | 	"git.tilde.town/tildetown/town/towndb" | ||||||
|  | 
 | ||||||
|  | 	_ "github.com/mattn/go-sqlite3" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type dbs struct { | ||||||
|  | 	Invites *sql.DB | ||||||
|  | 	Signups *sql.DB | ||||||
|  | 	Users   *sql.DB | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func connect() (*dbs, error) { | ||||||
|  | 	users, err := sql.Open("sqlite3", "/town/var/town.db?mode=r") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	signups, err := sql.Open("sqlite3", "/town/var/signups/signups.db?mode=r") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	invites, err := sql.Open("sqlite3", "/town/var/invites/invites.db?mode=r") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return &dbs{ | ||||||
|  | 		Invites: invites, | ||||||
|  | 		Signups: signups, | ||||||
|  | 		Users:   users, | ||||||
|  | 	}, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _main(argv []string) error { | ||||||
|  | 	if len(argv) < 3 { | ||||||
|  | 		return errors.New("want two args (user|email) <lookup>") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	switch argv[1] { | ||||||
|  | 	case "user": | ||||||
|  | 		return userLookup(argv[2]) | ||||||
|  | 	case "email": | ||||||
|  | 		return emailLookup(argv[2]) | ||||||
|  | 	default: | ||||||
|  | 		return fmt.Errorf("idk %s", argv[2]) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func userLookup(username string) error { | ||||||
|  | 	dbs, err := connect() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	stmt, err := dbs.Users.Prepare("SELECT id,created,username,state,admin FROM users WHERE username = ?") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return fmt.Errorf("user select prepare failed: %w", err) | ||||||
|  | 	} | ||||||
|  | 	var created string | ||||||
|  | 	tu := towndb.TownUser{} | ||||||
|  | 	err = stmt.QueryRow(username).Scan(&tu.ID, &created, &tu.Username, &tu.State, &tu.IsAdmin) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return fmt.Errorf("failed to select user: %w", err) | ||||||
|  | 	} | ||||||
|  | 	i, err := strconv.ParseInt(created, 10, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return fmt.Errorf("time what? %w", err) | ||||||
|  | 	} | ||||||
|  | 	tu.Created = time.Unix(i, 0) | ||||||
|  | 
 | ||||||
|  | 	fmt.Println("id,created,username,state,admin") | ||||||
|  | 	fmt.Printf("%d,%s,%s,%s,%v\n", tu.ID, tu.Created, tu.Username, tu.State, tu.IsAdmin) | ||||||
|  | 
 | ||||||
|  | 	// TODO rest | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func emailLookup(address string) error { | ||||||
|  | 	// TODO | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func main() { | ||||||
|  | 	if err := _main(os.Args); err != nil { | ||||||
|  | 		fmt.Fprintf(os.Stderr, "error: %s\n", err.Error()) | ||||||
|  | 		os.Exit(1) | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										67
									
								
								scripts/tma
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								scripts/tma
									
									
									
									
									
								
							| @ -1,67 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| 
 |  | ||||||
| set -e |  | ||||||
| 
 |  | ||||||
| signups="/town/var/signups/signups.db" |  | ||||||
| invites="/town/var/invites/invites.db" |  | ||||||
| users="/town/var/town.db" |  | ||||||
| bold=$(tput bold) |  | ||||||
| plain=$(tput sgr0) |  | ||||||
| 
 |  | ||||||
| which="${1}" |  | ||||||
| 
 |  | ||||||
| header() { |  | ||||||
|   echo $bold |  | ||||||
|   echo $1 |  | ||||||
|   echo $plain |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| case $which in |  | ||||||
|   user) |  | ||||||
|     username="${2}" |  | ||||||
|     if [ "$username" == "" ]; then |  | ||||||
|       echo "gimme a username" |  | ||||||
|       exit |  | ||||||
|     fi |  | ||||||
| 
 |  | ||||||
|     header "i looked in $users and found:" |  | ||||||
| 
 |  | ||||||
|     sqlite3 $users "select * from users where username='$username'" |  | ||||||
| 
 |  | ||||||
|     header "their emails are:" |  | ||||||
| 
 |  | ||||||
|     sqlite3 $users "select * from emails where userid in (select id from users where username='$username')" |  | ||||||
| 
 |  | ||||||
|     header "i looked in $invites and found:" |  | ||||||
| 
 |  | ||||||
|     sqlite3 $users "select address from emails where userid in (select id from users where username='$username')" | xargs printf "select * from invites where email='%s'" | sqlite3 $invites |  | ||||||
| 
 |  | ||||||
|     header "i looked in $signups and found:" |  | ||||||
| 
 |  | ||||||
|     sqlite3 $users "select address from emails where userid in (select id from users where username='$username')" | xargs printf "select * from signups where email like '%%%s%%'" | sqlite3 $signups |  | ||||||
|     ;; |  | ||||||
|   email) |  | ||||||
|     email="${2}" |  | ||||||
|     if [ "$email" == "" ]; then |  | ||||||
|       echo "gimme an email" |  | ||||||
|       exit |  | ||||||
|     fi |  | ||||||
|      |  | ||||||
|     header "i looked in $signups and found:" |  | ||||||
|      |  | ||||||
|     sqlite3 $signups "select * from signups where email like '%$email%'"; |  | ||||||
|      |  | ||||||
|     header "i looked in $invites and found:" |  | ||||||
|      |  | ||||||
|     sqlite3 $invites "select * from invites where email='$email'" |  | ||||||
|      |  | ||||||
|     header "i looked in $users and found:" |  | ||||||
|      |  | ||||||
|     sqlite3 $users "select * from users where id in (select userid from emails where address='$email')" |  | ||||||
|     ;; |  | ||||||
|   *) |  | ||||||
|     echo "what do you want to know about?" |  | ||||||
|     echo "i can tell you about: user, email" |  | ||||||
|     exit 1 |  | ||||||
|     ;; |  | ||||||
| esac |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user