Exemplo n.º 1
0
func myWidgets(w http.ResponseWriter, r *http.Request) {
	var err os.Error
	ctx := appengine.NewContext(r)

	page, err := template.Parse(myWidgetTemplate, nil)
	if err != nil {
		http.Error(w, err.String(), http.StatusInternalServerError)
		return
	}

	data := myWidgetData{
		CSS:    commonCSS(),
		Header: header(ctx),
	}

	data.Widget, err = LoadWidgets(ctx)
	if err != nil {
		http.Error(w, err.String(), http.StatusInternalServerError)
		return
	}

	if len(r.FormValue("ids_only")) > 0 {
		w.Header().Set("Content-Type", "text/plain")
		for _, widget := range data.Widget {
			fmt.Fprintln(w, widget.ID)
		}
		return
	}

	page.Execute(w, data)
}
Exemplo n.º 2
0
func (n *Network) Pass() os.Error {
	t := strconv.Itoa64(time.Nanoseconds())
	myreplies := []string{"ERR_NEEDMOREPARAMS", "ERR_ALREADYREGISTRED"}
	var err os.Error
	repch := make(chan *IrcMessage)
	for _, rep := range myreplies {
		if err := n.Listen.RegListener(replies[rep], t, repch); err != nil {
			err = os.NewError(fmt.Sprintf("Couldn't authenticate with password, exiting: %s", err.String()))
		}
	}
	ticker := time.NewTicker(timeout(n.lag))
	defer func(myreplies []string, t string, tick *time.Ticker) {
		for _, rep := range myreplies {
			n.Listen.DelListener(replies[rep], t)
		}
		tick.Stop()
		return
	}(myreplies, t, ticker)
	n.queueOut <- &IrcMessage{"", "PASS", []string{n.password}}
	select {
	case msg := <-repch:
		if msg.Cmd == replies["ERR_NEEDMOREPARAMS"] {
			err = os.NewError(fmt.Sprintf("Need more parameters for password: %s", msg.String()))
		}
		break
	case <-ticker.C:
		break
	}
	return err
}
Exemplo n.º 3
0
func NewStore(dir string, depth int, before int64) *BitcaskStore {
	p := new(BitcaskStore)
	p.depth = depth
	p.before = before
	p.locks = make([]sync.Mutex, 97)

	count := 1 << uint32(depth*4)
	p.bc = make([]*htree.Bitcask, count)
	for i := 0; i < count; i++ {
		subdir := ""
		if depth > 0 {
			sf := fmt.Sprintf("%%0%dx", depth)
			subdir = fmt.Sprintf(sf, i)
			subdir = strings.Join(strings.Split(subdir, ""), "/")
		}
		dbpath := path.Join(dir, subdir)
		os.MkdirAll(dbpath, 0755)
		var err os.Error
		p.bc[i], err = htree.NewBitcask(dbpath, depth, before)
		if err != nil {
			panic(os.NewError("Can not open db:" + dbpath + err.String()))
		}
	}

	return p
}
Exemplo n.º 4
0
func addWidget(w http.ResponseWriter, r *http.Request) {
	var err os.Error
	if fixup == nil {
		fixup, err = regexp.Compile(`[^A-Za-z0-9\-_. ]`)
		if err != nil {
			http.Error(w, err.String(), http.StatusInternalServerError)
			return
		}
	}

	ctx := appengine.NewContext(r)
	name := fixup.ReplaceAllString(r.FormValue("name"), "")

	if len(name) == 0 {
		http.Error(w, "Invalid/no name provided", http.StatusInternalServerError)
		return
	}

	widget := NewWidget(ctx, name)

	err = widget.Commit()
	if err != nil {
		http.Error(w, err.String(), http.StatusInternalServerError)
		return
	}

	http.Redirect(w, r, "/widget/list", http.StatusFound)
}
Exemplo n.º 5
0
func TestBasic(t *testing.T) {

	var val []byte
	var err os.Error

	err = client.Set("a", []byte("hello"))

	if err != nil {
		t.Fatal("set failed", err.String())
	}

	if val, err = client.Get("a"); err != nil || string(val) != "hello" {
		t.Fatal("get failed")
	}

	if typ, err := client.Type("a"); err != nil || typ != "string" {
		t.Fatal("type failed", typ)
	}

	//if keys, err := client.Keys("*"); err != nil || len(keys) != 1 {
	//    t.Fatal("keys failed", keys)
	//}

	client.Del("a")

	if ok, _ := client.Exists("a"); ok {
		t.Fatal("Should be deleted")
	}
}
Exemplo n.º 6
0
func match(t *testing.T, err os.Error, pat string) bool {
	ok, errstr := testing.MatchString(pat, err.String())
	if errstr != "" {
		t.Fatalf("compile regexp %s: %v", pat, errstr)
	}
	return ok
}
Exemplo n.º 7
0
func error(t *testing.T, err os.Error, msg string) {
	if err == nil {
		t.Error(msg)
	} else {
		t.Errorf("%s: %s\n", msg, err.String())
	}
}
Exemplo n.º 8
0
// Keep on writing outgoing messages to the socket
func (conn *Conn) sending() {
	for p := range conn.out {
		if p == nil {
			conn.Err <- ErrNilPacket
			continue
		}

		var err os.Error
		if p.Addr == nil {
			if !conn.IsConnected() {
				conn.error("conn.sending(): [%s] %s", p.Addr.String(), ErrClosedConn.String())
				continue
			}

			if _, err = conn.sock.Write(p.Msg); err != nil {
				conn.error("conn.sending(): %s", err.String())
			}
		} else {
			if !conn.IsConnected() {
				conn.error("conn.sending(): %s", ErrClosedConn.String())
				continue
			}

			if _, err = conn.sock.WriteTo(p.Msg, p.Addr); err != nil {
				conn.error("conn.sending() [%s]: %s", p.Addr.String(), err.String())
			}
		}
		if err != nil {
			conn.Disconnect()
			break
		}

	}
}
Exemplo n.º 9
0
Arquivo: fcgi.go Projeto: ality/web.go
func (s *Server) listenAndServeFcgi(addr string) os.Error {
	var l net.Listener
	var err os.Error

	//if the path begins with a "/", assume it's a unix address
	if strings.HasPrefix(addr, "/") {
		l, err = net.Listen("unix", addr)
	} else {
		l, err = net.Listen("tcp", addr)
	}

	if err != nil {
		s.Logger.Println("FCGI listen error", err.String())
		return err
	}
	for {
		fd, err := l.Accept()
		if err != nil {
			s.Logger.Println("FCGI accept error", err.String())
			break
		}
		go s.handleFcgiConnection(fd)
	}
	return nil
}
Exemplo n.º 10
0
Arquivo: aa.go Projeto: dhwells/go
func main() {
	hdr := map[string]string{}
	e, _ := armor.Encode(os.Stdout, "RADIX-64", hdr)

	const NBUF = 512
	var buf [NBUF]byte
	var err, erw os.Error
	var nr, nw int
	for {
		switch nr, err = os.Stdin.Read(buf[:]); true {
		case nr < 0:
			fmt.Fprintf(os.Stderr, "error reading from Stdin: %s\n", err.String())
			os.Exit(1)
		case nr == 0:
			break
		case nr > 0:
			if nw, erw = e.Write(buf[0:nr]); nw != nr {
				fmt.Fprintf(os.Stderr, "error writing encoded bytes to Stdout: %s\n", erw.String())
				os.Exit(1)
			}
		}
		if err == os.EOF {
			break
		}
	}
	e.Close()
}
Exemplo n.º 11
0
func (vr *VerifyRequest) VerifySignature() bool {
	armorData := reArmor(vr.CamliSig)
	block, _ := armor.Decode(bytes.NewBufferString(armorData))
	if block == nil {
		return vr.fail("can't parse camliSig armor")
	}
	var p packet.Packet
	var err os.Error
	p, err = packet.Read(block.Body)
	if err != nil {
		return vr.fail("error reading PGP packet from camliSig: " + err.String())
	}
	sig, ok := p.(*packet.Signature)
	if !ok {
		return vr.fail("PGP packet isn't a signature packet")
	}
	if sig.Hash != crypto.SHA1 && sig.Hash != crypto.SHA256 {
		return vr.fail("I can only verify SHA1 or SHA256 signatures")
	}
	if sig.SigType != packet.SigTypeBinary {
		return vr.fail("I can only verify binary signatures")
	}
	hash := sig.Hash.New()
	hash.Write(vr.bp) // payload bytes
	err = vr.PublicKeyPacket.VerifySignature(hash, sig)
	if err != nil {
		return vr.fail(fmt.Sprintf("bad signature: %s", err))
	}
	vr.SignerKeyId = vr.PublicKeyPacket.KeyIdString()
	return true
}
Exemplo n.º 12
0
func (l *pktHandler) handle() {
	var err, clientErr os.Error

	defer func() {
		if err != nil {
			log.Print("Connection closed ", err.String())
			if clientErr == nil {
				clientErr = clientErrGeneral
			}
			proto.WriteDisconnect(l.conn, clientErr.String())
			l.conn.Close()
		}
	}()

	err = proto.ServerReadPacketExpect(l.conn, l, []byte{
		proto.PacketIdHandshake,
		proto.PacketIdServerListPing,
	})
	if err != nil {
		clientErr = clientErrLoginGeneral
		return
	}

	switch l.connType {
	case connTypeLogin:
		err, clientErr = l.handleLogin(l.conn)
	case connTypeServerQuery:
		err, clientErr = l.handleServerQuery(l.conn)
	default:
		err = loginErrorConnType
	}
}
Exemplo n.º 13
0
// Sends messages over the remote conn that come through the queue.
func (cl *client) SendLoop(cs chan<- Msg) {
	defer logAndClose(cl.conn)
	for {
		msg := <-cl.SendQueue
		var err os.Error
		switch m := msg.(type) {
		case MsgAddEntity:
			err = sendMessage(cl.conn, makeAddEntity(int32(m.Uid), m.Name))
		case MsgRemoveEntity:
			err = sendMessage(cl.conn, makeRemoveEntity(int32(m.Uid), m.Name))
		case MsgUpdateState:
			value := packState(m.State)
			err = sendMessage(cl.conn, makeUpdateState(int32(m.Uid), m.State.Name(), value))
		case MsgAssignControl:
			err = sendMessage(cl.conn, makeAssignControl(int32(m.Uid), m.Revoked))
		case MsgEntityDeath:
			uid, name := m.Entity.Uid, m.Entity.Name
			kuid, kname := m.Killer.Uid, m.Killer.Name
			err = sendMessage(cl.conn, makeEntityDeath(int32(uid), name, int32(kuid), kname))
		case MsgCombatHit:
			auid, aname := m.Attacker.Uid, m.Attacker.Name
			vuid, vname := m.Victim.Uid, m.Victim.Name
			err = sendMessage(cl.conn, makeCombatHit(int32(auid), aname, int32(vuid), vname, m.Damage))
		}
		// Remove client if something went wrong
		if err != nil {
			cs <- removeClientMsg{cl, "Sending message to client failed: " + err.String()}
			return
		}
	}
}
Exemplo n.º 14
0
func failnoting(s string, e os.Error) {
	if e != nil {
		fmt.Println(Usage())
		fmt.Println("\n"+s, e.String())
		os.Exit(1)
	}
}
Exemplo n.º 15
0
func checkErr(message string, err os.Error) {
	// ignore os.EOF since it's not really an error...
	if err != nil && err != os.EOF {
		os.Stderr.WriteString(message + "\n" + err.String() + "\n")
		os.Exit(1)
	}
}
Exemplo n.º 16
0
// parse a file, and store the templates in Page.Template
func (t *Page) ParseFile(formatterMap map[string]func(io.Writer, string, ...interface{})) {
	var err os.Error
	t.Template, err = template.ParseFile(t.Filename, formatterMap)
	if err != nil {
		log.Fatal("Cannot Parse " + t.Filename + "; got " + err.String())
	}
}
Exemplo n.º 17
0
func print(a interface{}, err os.Error) {
	if err == nil {
		fmt.Printf("  answer: %v\r\n", a)
	} else if err != ErrCtrlD {
		fmt.Printf(err.String() + "\r\n")
	}
}
Exemplo n.º 18
0
func match(t *testing.T, err os.Error, pat string) bool {
	ok, err1 := regexp.MatchString(pat, err.String())
	if err1 != nil {
		t.Fatalf("compile regexp %s: %v", pat, err1)
	}
	return ok
}
Exemplo n.º 19
0
func TestSet(t *testing.T) {
	var err os.Error

	vals := []string{"a", "b", "c", "d", "e"}

	for _, v := range vals {
		client.Sadd("s", strings.Bytes(v))
	}

	var members [][]byte

	if members, err = client.Smembers("s"); err != nil || len(members) != 5 {
		t.Fatal("Set setup failed", err.String())
	}

	for _, v := range vals {
		if ok, err := client.Sismember("s", strings.Bytes(v)); err != nil || !ok {
			t.Fatal("Sismember test failed")
		}
	}

	for _, v := range vals {
		if ok, err := client.Srem("s", strings.Bytes(v)); err != nil || !ok {
			t.Fatal("Sismember test failed")
		}
	}

	if members, err = client.Smembers("s"); err != nil || len(members) != 0 {
		t.Fatal("Set setup failed", err.String())
	}

	client.Del("s")

}
Exemplo n.º 20
0
Arquivo: abort.go Projeto: 8l/go-learn
// Abort aborts the thread's current computation,
// causing the innermost Try to return err.
func (t *Thread) Abort(err os.Error) {
	if t.abort == nil {
		panicln("abort:", err.String())
	}
	t.abort <- err
	runtime.Goexit()
}
Exemplo n.º 21
0
func main() {

	var err os.Error

	// Pull in command line options or defaults if none given
	flag.Parse()

	f, err := os.OpenFile(*skylib.LogFileName, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
	if err == nil {
		defer f.Close()
		log.SetOutput(f)
	}

	skylib.Setup(sName)

	homeTmpl = template.MustParse(homeTemplate, nil)
	respTmpl = template.MustParse(responseTemplate, nil)

	http.HandleFunc("/", homeHandler)
	http.HandleFunc("/new", submitHandler)

	rpc.HandleHTTP()

	portString := fmt.Sprintf("%s:%d", *skylib.BindIP, *skylib.Port)

	err = http.ListenAndServe(portString, nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err.String())
	}
}
Exemplo n.º 22
0
Arquivo: daa.go Projeto: dhwells/go
func main() {
	b, erd := armor.Decode(os.Stdin)
	if erd != nil {
		fmt.Println("unable to decode the Stdin")
		os.Exit(2)
	}
	const NBUF = 512
	var buf [NBUF]byte
	var err, erw os.Error
	var nr, nw int
	for {
		switch nr, err = b.Body.Read(buf[:]); true {
		case nr < 0:
			fmt.Fprintf(os.Stderr, "error reading from Stdin: %s\n", err.String())
			os.Exit(1)
		case nr == 0:
			break
		case nr > 0:
			if nw, erw = os.Stdout.Write(buf[0:nr]); nw != nr {
				fmt.Fprintf(os.Stderr, "error writing decoded bytes to Stdout: %s\n", erw.String())
				os.Exit(1)
			}
		}
		if err == os.EOF {
			break
		}
	}
}
Exemplo n.º 23
0
func (s *Server) listenAndServeScgi(addr string) os.Error {

	var l net.Listener
	var err os.Error

	//if the path begins with a "/", assume it's a unix address
	if strings.HasPrefix(addr, "/") {
		l, err = net.Listen("unix", addr)
	} else {
		l, err = net.Listen("tcp", addr)
	}

	//save the listener so it can be closed
	s.l = l

	if err != nil {
		s.Logger.Println("SCGI listen error", err.String())
		return err
	}

	for {
		fd, err := l.Accept()
		if err != nil {
			s.Logger.Println("SCGI accept error", err.String())
			return err
		}
		go s.handleScgiRequest(fd)
	}
	return nil
}
Exemplo n.º 24
0
func (mw *MainWindow) showError(err os.Error) {
	if err == nil {
		return
	}

	walk.MsgBox(mw, "Error", err.String(), walk.MsgBoxOK|walk.MsgBoxIconError)
}
Exemplo n.º 25
0
// Test that when we open a real XLSX file we create xlsx.Sheet
// objects for the sheets inside the file and that these sheets are
// themselves correct.
func TestCreateSheet(t *testing.T) {
	var xlsxFile *File
	var error os.Error
	var sheet *Sheet
	var row *Row
	xlsxFile, error = OpenFile("testfile.xlsx")
	if error != nil {
		t.Error(error.String())
		return
	}
	if xlsxFile == nil {
		t.Error("OpenFile returned a nil File pointer but did not generate an error.")
		return
	}
	if len(xlsxFile.Sheets) == 0 {
		t.Error("Expected len(xlsxFile.Sheets) > 0")
		return
	}
	sheet = xlsxFile.Sheets[0]
	if len(sheet.Rows) != 2 {
		t.Error("Expected len(sheet.Rows) == 2")
		return
	}
	row = sheet.Rows[0]
	if len(row.Cells) != 2 {
		t.Error("Expected len(row.Cells) == 2")
		return
	}
	cell := row.Cells[0]
	cellstring := cell.String()
	if cellstring != "Foo" {
		t.Error("Expected cell.String() == 'Foo', got ", cellstring)
	}
}
Exemplo n.º 26
0
func main() {

	var err os.Error

	db := 0
	port := 6379

	args := os.Args[1:]

	for i := 0; i < len(args); i++ {
		arg := args[i]
		if arg == "-p" && i < len(args)-1 {
			if port, err = strconv.Atoi(args[i+1]); err != nil {
				println(err.String())
				return
			}
			i += 1
			continue
		} else if arg == "-db" && i < len(args)-1 {
			if db, err = strconv.Atoi(args[i+1]); err != nil {
				println(err.String())
				return
			}
			i += 1
			continue
		} else {
			println("Invalid argument: ", arg)
			usage()
			return
		}
	}
	println("port", port, db)
	load_db(port, db, bufio.NewReader(os.Stdin))

}
Exemplo n.º 27
0
func MakeRedirect(base string) (handler func(ctx *web.Context, val string)) {
	handler = func(ctx *web.Context, val string) {
		var fin *os.File
		var err os.Error
		fin, err = os.Open(path.Join(base, val), os.O_RDONLY, 0)
		if err != nil {
			ctx.WriteString(err.String())
			return
		}
		buf := make([]byte, 1024)
		for {
			var n int
			n, err = fin.Read(buf)
			if err != nil {
				ctx.WriteString(err.String())
				return
			}
			if n == 0 || err != nil {
				break
			}
			ctx.Write(buf[0:n])
		}
		fin.Close()
	}
	return
}
Exemplo n.º 28
0
func DoozerConnect() {
	var err os.Error
	DC, err = doozer.Dial(*DoozerServer)
	if err != nil {
		log.Panic(err.String())
	}
}
Exemplo n.º 29
0
func Errored(e os.Error, mesg string) bool {
	if e != nil {
		fmt.Printf("Errored %s\n", mesg)
		fmt.Println(e.String())
		return true
	}
	return false
}
Exemplo n.º 30
0
Arquivo: goplay.go Projeto: ssrl/go
// error writes compile, link, or runtime errors to the HTTP connection.
// The JavaScript interface uses the 404 status code to identify the error.
func error(w http.ResponseWriter, out []byte, err os.Error) {
	w.WriteHeader(404)
	if out != nil {
		output.Execute(w, out)
	} else {
		output.Execute(w, err.String())
	}
}