SYMBOL INDEX (107 symbols across 14 files) FILE: cmd/gemini/main.go function main (line 5) | func main() { FILE: cmd/ssh/main.go type SSHServer (line 23) | type SSHServer struct method authHandler (line 25) | func (me *SSHServer) authHandler(ctx ssh.Context, key ssh.PublicKey) b... function createRouter (line 29) | func createRouter(handler *internal.DbHandler) proxy.Router { function withProxy (line 47) | func withProxy(handler *internal.DbHandler) ssh.Option { function main (line 58) | func main() { FILE: cmd/web/main.go function main (line 5) | func main() { FILE: db/migrations/20220310_init.sql type app_users (line 3) | CREATE TABLE IF NOT EXISTS app_users ( type public_keys (line 11) | CREATE TABLE IF NOT EXISTS public_keys ( type posts (line 25) | CREATE TABLE IF NOT EXISTS posts ( FILE: db/migrations/20220426_add_index_for_filename.sql type posts_filename (line 1) | CREATE INDEX posts_filename ON posts USING btree(filename) FILE: db/migrations/20220721_analytics.sql type post_analytics (line 1) | CREATE TABLE IF NOT EXISTS post_analytics ( FILE: internal/api.go type PageData (line 20) | type PageData struct type PostItemData (line 24) | type PostItemData struct type BlogPageData (line 37) | type BlogPageData struct type ReadPageData (line 48) | type ReadPageData struct type PostPageData (line 55) | type PostPageData struct type TransparencyPageData (line 70) | type TransparencyPageData struct function isRequestTrackable (line 75) | func isRequestTrackable(r *http.Request) bool { function renderTemplate (line 79) | func renderTemplate(templates []string) (*template.Template, error) { function createPageHandler (line 96) | func createPageHandler(fname string) http.HandlerFunc { type HeaderTxt (line 119) | type HeaderTxt struct type ReadmeTxt (line 126) | type ReadmeTxt struct function GetUsernameFromRequest (line 132) | func GetUsernameFromRequest(r *http.Request) string { function blogHandler (line 142) | func blogHandler(w http.ResponseWriter, r *http.Request) { function GetPostTitle (line 233) | func GetPostTitle(post *db.Post) string { function GetBlogName (line 241) | func GetBlogName(username string) string { function postHandler (line 245) | func postHandler(w http.ResponseWriter, r *http.Request) { function transparencyHandler (line 350) | func transparencyHandler(w http.ResponseWriter, r *http.Request) { function readHandler (line 384) | func readHandler(w http.ResponseWriter, r *http.Request) { function rssBlogHandler (line 442) | func rssBlogHandler(w http.ResponseWriter, r *http.Request) { function rssHandler (line 540) | func rssHandler(w http.ResponseWriter, r *http.Request) { function serveFile (line 608) | func serveFile(file string, contentType string) http.HandlerFunc { function createStaticRoutes (line 627) | func createStaticRoutes() []Route { function createMainRoutes (line 639) | func createMainRoutes(staticRoutes []Route) []Route { function createSubdomainRoutes (line 670) | func createSubdomainRoutes(staticRoutes []Route) []Route { function StartApiServer (line 689) | func StartApiServer() { FILE: internal/config.go type SitePageData (line 13) | type SitePageData struct type ConfigSite (line 19) | type ConfigSite struct method GetSiteData (line 59) | func (c *ConfigSite) GetSiteData() *SitePageData { method BlogURL (line 67) | func (c *ConfigSite) BlogURL(username string) string { method PostURL (line 75) | func (c *ConfigSite) PostURL(username, filename string) string { method IsSubdomains (line 84) | func (c *ConfigSite) IsSubdomains() bool { method RssBlogURL (line 88) | func (c *ConfigSite) RssBlogURL(username string) string { method HomeURL (line 96) | func (c *ConfigSite) HomeURL() string { method ReadURL (line 104) | func (c *ConfigSite) ReadURL() string { function NewConfigSite (line 25) | func NewConfigSite() *ConfigSite { function CreateLogger (line 112) | func CreateLogger() *zap.SugaredLogger { FILE: internal/db_handler.go type Opener (line 18) | type Opener struct method Open (line 22) | func (o *Opener) Open(name string) (io.Reader, error) { type DbHandler (line 26) | type DbHandler struct method Validate (line 39) | func (h *DbHandler) Validate(s ssh.Session) error { method Write (line 59) | func (h *DbHandler) Write(s ssh.Session, entry *sendutils.FileEntry) (... function NewDbHandler (line 32) | func NewDbHandler(dbpool db.DB, cfg *ConfigSite) *DbHandler { FILE: internal/gemini/gemini.go function renderTemplate (line 26) | func renderTemplate(templates []string) (*template.Template, error) { function createPageHandler (line 43) | func createPageHandler(fname string) gemini.HandlerFunc { function blogHandler (line 66) | func blogHandler(ctx context.Context, w gemini.ResponseWriter, r *gemini... function readHandler (line 157) | func readHandler(ctx context.Context, w gemini.ResponseWriter, r *gemini... function postHandler (line 227) | func postHandler(ctx context.Context, w gemini.ResponseWriter, r *gemini... function transparencyHandler (line 306) | func transparencyHandler(ctx context.Context, w gemini.ResponseWriter, r... function rssBlogHandler (line 341) | func rssBlogHandler(ctx context.Context, w gemini.ResponseWriter, r *gem... function rssHandler (line 439) | func rssHandler(ctx context.Context, w gemini.ResponseWriter, r *gemini.... function StartServer (line 507) | func StartServer() { FILE: internal/gemini/router.go type ctxKey (line 13) | type ctxKey struct type ctxDBKey (line 14) | type ctxDBKey struct type ctxLoggerKey (line 15) | type ctxLoggerKey struct type ctxCfgKey (line 16) | type ctxCfgKey struct function GetLogger (line 18) | func GetLogger(ctx context.Context) *zap.SugaredLogger { function GetCfg (line 22) | func GetCfg(ctx context.Context) *internal.ConfigSite { function GetDB (line 26) | func GetDB(ctx context.Context) db.DB { function GetField (line 30) | func GetField(ctx context.Context, index int) string { type Route (line 35) | type Route struct function NewRoute (line 40) | func NewRoute(pattern string, handler gemini.HandlerFunc) Route { type ServeFn (line 47) | type ServeFn function CreateServe (line 49) | func CreateServe(routes []Route, cfg *internal.ConfigSite, dbpool db.DB,... FILE: internal/router.go type Route (line 14) | type Route struct function NewRoute (line 20) | func NewRoute(method, pattern string, handler http.HandlerFunc) Route { type ServeFn (line 28) | type ServeFn function CreateServe (line 30) | func CreateServe(routes []Route, subdomainRoutes []Route, cfg *ConfigSit... type ctxDBKey (line 72) | type ctxDBKey struct type ctxKey (line 73) | type ctxKey struct type ctxLoggerKey (line 74) | type ctxLoggerKey struct type ctxSubdomainKey (line 75) | type ctxSubdomainKey struct type ctxCfg (line 76) | type ctxCfg struct function GetCfg (line 78) | func GetCfg(r *http.Request) *ConfigSite { function GetLogger (line 82) | func GetLogger(r *http.Request) *zap.SugaredLogger { function GetDB (line 86) | func GetDB(r *http.Request) db.DB { function GetField (line 90) | func GetField(r *http.Request, index int) string { function GetSubdomain (line 95) | func GetSubdomain(r *http.Request) string { FILE: internal/util.go function FilenameToTitle (line 22) | func FilenameToTitle(filename string, title string) string { function SanitizeFileExt (line 33) | func SanitizeFileExt(fname string) string { function KeyText (line 37) | func KeyText(s ssh.Session) (string, error) { function GetEnv (line 45) | func GetEnv(key string, defaultVal string) string { function IsText (line 55) | func IsText(s string) bool { function IsTextFile (line 79) | func IsTextFile(text string, filename string) bool { constant solarYearSecs (line 89) | solarYearSecs = 31556926 function TimeAgo (line 91) | func TimeAgo(t *time.Time) string { FILE: pkg/parser.go type ParsedText (line 10) | type ParsedText struct type ListItem (line 15) | type ListItem struct type MetaData (line 28) | type MetaData struct type SplitToken (line 43) | type SplitToken struct function TextToSplitToken (line 48) | func TextToSplitToken(text string) *SplitToken { function SplitByNewline (line 70) | func SplitByNewline(text string) []string { function PublishAtDate (line 74) | func PublishAtDate(date string) (*time.Time, error) { function TokenToMetaField (line 79) | func TokenToMetaField(meta *MetaData, token *SplitToken) { function KeyAsValue (line 94) | func KeyAsValue(token *SplitToken) string { function ParseText (line 101) | func ParseText(text string) *ParsedText {