A fork of the Cocoon PDS but being made more distributed.
0

Configure Feed

Select the types of activity you want to include in your feed.

1package main 2 3import ( 4 "fmt" 5 "os" 6 7 "github.com/haileyok/cocoon/server" 8 _ "github.com/joho/godotenv/autoload" 9 "github.com/urfave/cli/v2" 10) 11 12var Version = "dev" 13 14func main() { 15 app := &cli.App{ 16 Name: "cocoon", 17 Usage: "An atproto PDS", 18 Flags: []cli.Flag{ 19 &cli.StringFlag{ 20 Name: "addr", 21 Value: ":8080", 22 EnvVars: []string{"COCOON_ADDR"}, 23 }, 24 &cli.StringFlag{ 25 Name: "db-name", 26 Value: "cocoon.db", 27 EnvVars: []string{"COCOON_DB_NAME"}, 28 }, 29 &cli.StringFlag{ 30 Name: "did", 31 Required: true, 32 EnvVars: []string{"COCOON_DID"}, 33 }, 34 &cli.StringFlag{ 35 Name: "hostname", 36 Required: true, 37 EnvVars: []string{"COCOON_HOSTNAME"}, 38 }, 39 &cli.StringFlag{ 40 Name: "rotation-key-path", 41 Required: true, 42 EnvVars: []string{"COCOON_ROTATION_KEY_PATH"}, 43 }, 44 &cli.StringFlag{ 45 Name: "jwk-path", 46 Required: true, 47 EnvVars: []string{"COCOON_JWK_PATH"}, 48 }, 49 &cli.StringFlag{ 50 Name: "contact-email", 51 Required: true, 52 EnvVars: []string{"COCOON_CONTACT_EMAIL"}, 53 }, 54 &cli.StringSliceFlag{ 55 Name: "relays", 56 Required: true, 57 EnvVars: []string{"COCOON_RELAYS"}, 58 }, 59 &cli.StringFlag{ 60 Name: "admin-password", 61 Required: true, 62 EnvVars: []string{"COCOON_ADMIN_PASSWORD"}, 63 }, 64 &cli.StringFlag{ 65 Name: "smtp-user", 66 Required: false, 67 EnvVars: []string{"COCOON_SMTP_USER"}, 68 }, 69 &cli.StringFlag{ 70 Name: "smtp-pass", 71 Required: false, 72 EnvVars: []string{"COCOON_SMTP_PASS"}, 73 }, 74 &cli.StringFlag{ 75 Name: "smtp-host", 76 Required: false, 77 EnvVars: []string{"COCOON_SMTP_HOST"}, 78 }, 79 &cli.StringFlag{ 80 Name: "smtp-port", 81 Required: false, 82 EnvVars: []string{"COCOON_SMTP_PORT"}, 83 }, 84 &cli.StringFlag{ 85 Name: "smtp-email", 86 Required: false, 87 EnvVars: []string{"COCOON_SMTP_EMAIL"}, 88 }, 89 &cli.StringFlag{ 90 Name: "smtp-name", 91 Required: false, 92 EnvVars: []string{"COCOON_SMTP_NAME"}, 93 }, 94 &cli.BoolFlag{ 95 Name: "s3-backups-enabled", 96 EnvVars: []string{"COCOON_S3_BACKUPS_ENABLED"}, 97 }, 98 &cli.StringFlag{ 99 Name: "s3-region", 100 EnvVars: []string{"COCOON_S3_REGION"}, 101 }, 102 &cli.StringFlag{ 103 Name: "s3-bucket", 104 EnvVars: []string{"COCOON_S3_BUCKET"}, 105 }, 106 &cli.StringFlag{ 107 Name: "s3-endpoint", 108 EnvVars: []string{"COCOON_S3_ENDPOINT"}, 109 }, 110 &cli.StringFlag{ 111 Name: "s3-access-key", 112 EnvVars: []string{"COCOON_S3_ACCESS_KEY"}, 113 }, 114 &cli.StringFlag{ 115 Name: "s3-secret-key", 116 EnvVars: []string{"COCOON_S3_SECRET_KEY"}, 117 }, 118 &cli.StringFlag{ 119 Name: "session-secret", 120 EnvVars: []string{"COCOON_SESSION_SECRET"}, 121 }, 122 }, 123 Commands: []*cli.Command{ 124 run, 125 }, 126 ErrWriter: os.Stdout, 127 Version: Version, 128 } 129 130 if err := app.Run(os.Args); err != nil { 131 fmt.Printf("Error: %v\n", err) 132 } 133} 134 135var run = &cli.Command{ 136 Name: "run", 137 Usage: "Start the cocoon PDS", 138 Flags: []cli.Flag{}, 139 Action: func(cmd *cli.Context) error { 140 s, err := server.New(&server.Args{ 141 Addr: cmd.String("addr"), 142 DbName: cmd.String("db-name"), 143 Did: cmd.String("did"), 144 Hostname: cmd.String("hostname"), 145 RotationKeyPath: cmd.String("rotation-key-path"), 146 JwkPath: cmd.String("jwk-path"), 147 ContactEmail: cmd.String("contact-email"), 148 Version: Version, 149 Relays: cmd.StringSlice("relays"), 150 AdminPassword: cmd.String("admin-password"), 151 SmtpUser: cmd.String("smtp-user"), 152 SmtpPass: cmd.String("smtp-pass"), 153 SmtpHost: cmd.String("smtp-host"), 154 SmtpPort: cmd.String("smtp-port"), 155 SmtpEmail: cmd.String("smtp-email"), 156 SmtpName: cmd.String("smtp-name"), 157 S3Config: &server.S3Config{ 158 BackupsEnabled: cmd.Bool("s3-backups-enabled"), 159 Region: cmd.String("s3-region"), 160 Bucket: cmd.String("s3-bucket"), 161 Endpoint: cmd.String("s3-endpoint"), 162 AccessKey: cmd.String("s3-access-key"), 163 SecretKey: cmd.String("s3-secret-key"), 164 }, 165 SessionSecret: cmd.String("session-secret"), 166 }) 167 if err != nil { 168 fmt.Printf("error creating cocoon: %v", err) 169 return err 170 } 171 172 if err := s.Serve(cmd.Context); err != nil { 173 fmt.Printf("error starting cocoon: %v", err) 174 return err 175 } 176 177 return nil 178 }, 179}