func main() { var db *membersys.MembershipDB var config membersys.MembersysConfig var config_contents []byte var config_path string var prev_key string var help bool var err error flag.BoolVar(&help, "help", false, "Display help") flag.StringVar(&config_path, "config", "", "Path to the member creator configuration file") flag.Parse() if help || config_path == "" { flag.Usage() os.Exit(1) } config_contents, err = ioutil.ReadFile(config_path) if err != nil { log.Fatal("Unable to read ", config_path, ": ", err) } err = proto.Unmarshal(config_contents, &config) if err != nil { err = proto.UnmarshalText(string(config_contents), &config) } if err != nil { log.Fatal("Error parsing ", config_path, ": ", err) } db, err = membersys.NewMembershipDB( config.DatabaseConfig.GetDatabaseServer(), config.DatabaseConfig.GetDatabaseName(), time.Duration(config.DatabaseConfig.GetDatabaseTimeout())*time.Millisecond) if err != nil { log.Fatal("Unable to connect to the cassandra DB ", config.DatabaseConfig.GetDatabaseServer(), " at ", config.DatabaseConfig.GetDatabaseName(), ": ", err) } for { var members []*membersys.Member var member *membersys.Member members, err = db.EnumerateMembers(prev_key, 25) if err != nil { log.Fatal("Error fetching data starting from ", prev_key, ": ", err) } if len(members) == 0 { break } for _, member = range members { fmt.Printf("Name:\t\t%s\r\nAddress:\t%s, %s\r\nEmail:\t\t%s\r\n"+ "Username:\t%s\r\n\r\n", member.GetName(), member.GetStreet(), member.GetCity(), member.GetEmail(), member.GetUsername()) prev_key = member.GetEmail() + "\000" } } }
func main() { var help bool var bindto, config_file string var config_contents []byte var application_tmpl, memberlist_tmpl, print_tmpl *template.Template var unique_member_detail_template *template.Template var authenticator *ancientauth.Authenticator var debug_authenticator bool var config membersys.MembersysConfig var db *membersys.MembershipDB var err error flag.BoolVar(&help, "help", false, "Display help") flag.StringVar(&bindto, "bind", "127.0.0.1:8080", "The address to bind the web server to") flag.StringVar(&config_file, "config", "", "Path to a file containing a MembersysConfig protocol buffer") flag.BoolVar(&debug_authenticator, "debug-authenticator", false, "Debug the authenticator?") flag.Parse() if help || config_file == "" { flag.Usage() os.Exit(1) } config_contents, err = ioutil.ReadFile(config_file) if err != nil { log.Fatal("Unable to read ", config_file, ": ", err) } err = proto.Unmarshal(config_contents, &config) if err != nil { err = proto.UnmarshalText(string(config_contents), &config) } if err != nil { log.Fatal("Error parsing ", config_file, ": ", err) } // Load and parse the HTML templates to be displayed. application_tmpl, err = template.ParseFiles( config.GetTemplateDir() + "/form.html") if err != nil { log.Fatal("Unable to parse form template: ", err) } print_tmpl, err = template.ParseFiles( config.GetTemplateDir() + "/printlayout.html") if err != nil { log.Fatal("Unable to parse print layout template: ", err) } memberlist_tmpl = template.New("memberlist") memberlist_tmpl.Funcs(fmap) memberlist_tmpl, err = memberlist_tmpl.ParseFiles( config.GetTemplateDir() + "/memberlist.html") if err != nil { log.Fatal("Unable to parse member list template: ", err) } unique_member_detail_template = template.New("memberdetail") unique_member_detail_template.Funcs(fmap) unique_member_detail_template, err = unique_member_detail_template.ParseFiles( config.GetTemplateDir() + "/memberdetail.html") if err != nil { log.Fatal("Unable to parse member detail template: ", err) } authenticator, err = ancientauth.NewAuthenticator( config.AuthenticationConfig.GetAppName(), config.AuthenticationConfig.GetCertPath(), config.AuthenticationConfig.GetKeyPath(), config.AuthenticationConfig.GetCaBundlePath(), config.AuthenticationConfig.GetAuthServerHost(), config.AuthenticationConfig.GetX509KeyserverHost(), int(config.AuthenticationConfig.GetX509CertificateCacheSize())) if err != nil { log.Fatal("Unable to assemble authenticator: ", err) } if debug_authenticator { authenticator.Debug() } db, err = membersys.NewMembershipDB( config.DatabaseConfig.GetDatabaseServer(), config.DatabaseConfig.GetDatabaseName(), time.Duration(config.DatabaseConfig.GetDatabaseTimeout())*time.Millisecond) if err != nil { log.Fatal("Unable to connect to the cassandra DB ", config.DatabaseConfig.GetDatabaseServer(), " at ", config.DatabaseConfig.GetDatabaseName(), ": ", err) } // Register the URL handlers to be invoked. http.Handle("/admin/api/members", &MemberListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), }) http.Handle("/admin/api/applicants", &ApplicantListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), }) http.Handle("/admin/api/queue", &MemberQueueListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), }) http.Handle("/admin/api/dequeue", &MemberDeQueueListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), }) http.Handle("/admin/api/trash", &MemberTrashListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), }) http.Handle("/admin/api/accept", &MemberAcceptHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/reject", &MemberRejectHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/editfee", &MemberFeeHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/agreement-upload", &MemberAgreementUploadHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/cancel-queued", &MemberQueueCancelHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/goodbye-member", &MemberGoodbyeHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin/api/member", &MemberDetailHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, }) http.Handle("/admin", &TotalListHandler{ admingroup: config.AuthenticationConfig.GetAuthGroup(), auth: authenticator, database: db, pagesize: config.GetResultPageSize(), template: memberlist_tmpl, uniqueMemberTemplate: unique_member_detail_template, }) http.HandleFunc("/barcode", MakeBarcode) http.Handle("/", &FormInputHandler{ applicationTmpl: application_tmpl, database: db, passthrough: http.FileServer(http.Dir(config.GetTemplateDir())), printTmpl: print_tmpl, useProxyRealIP: config.GetUseProxyRealIp(), }) err = http.ListenAndServe(bindto, nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }
func main() { var db *membersys.MembershipDB var agreement *membersys.MembershipAgreement var config membersys.MemberCreatorConfig var wm *membersys.WelcomeMail var config_contents []byte var config_path string var lookup_key string var help bool var err error flag.BoolVar(&help, "help", false, "Display help") flag.StringVar(&config_path, "config", "", "Path to the member creator configuration file") flag.StringVar(&lookup_key, "key", "", "Key of the user record to look up") flag.Parse() if help || config_path == "" { flag.Usage() os.Exit(1) } config_contents, err = ioutil.ReadFile(config_path) if err != nil { log.Fatal("Unable to read ", config_path, ": ", err) } err = proto.Unmarshal(config_contents, &config) if err != nil { err = proto.UnmarshalText(string(config_contents), &config) } if err != nil { log.Fatal("Error parsing ", config_path, ": ", err) } db, err = membersys.NewMembershipDB( config.DatabaseConfig.GetDatabaseServer(), config.DatabaseConfig.GetDatabaseName(), time.Duration(config.DatabaseConfig.GetDatabaseTimeout())*time.Millisecond) if err != nil { log.Fatal("Unable to connect to the cassandra DB ", config.DatabaseConfig.GetDatabaseServer(), " at ", config.DatabaseConfig.GetDatabaseName(), ": ", err) } wm, err = membersys.NewWelcomeMail(config.GetWelcomeMailConfig()) if err != nil { log.Fatal("Error setting up mailer: ", err) } agreement, err = db.GetMemberDetail(lookup_key) if err != nil { log.Fatal("Error fetching member ", lookup_key, ": ", err) } err = wm.SendMail(agreement.GetMemberData()) if err != nil { log.Fatal("Error sending mail to ", agreement.GetMemberData().GetEmail(), ": ", err) } }