duanjupiao4730 2019-08-21 20:21
浏览 63

服务器无法在Google App Engine中启动; 在Localhost中确定

I have a Flex App written in Go and React that is deployed to Google App engine. I would like it to interact with a MySql Database (2nd generation) on Google Cloud over a Unix socket. I believe the issue lies with the Go server not launching/responding to requests (see below for justification). The App is located at https://haveibeenexploited.appspot.com/

The project is simple. I have two routes in my Server:

server.go

package main

import (
     "net/http"
     "searchcontract"
)

func main() {
    http.Handle("/", http.FileServer(http.Dir("./app/build")))
    http.HandleFunc("/search", searchcontract.SearchContract)
    http.ListenAndServe(":8080", nil)
}   

The second route ("/search") is activated when a user hits the search button. Ideal behavior should return a row specifying the exploits available for the given "contract address" which React writes out to the screen. searchcontract/searchcontract.go

//SearchContract is a handler that queries the DB for compromised contracts.
func SearchContract(w http.ResponseWriter, r *http.Request) {
  var contractName contractID //Used for parsing in contractName
  queryResult := getRow(&contractName.Name)
  w.WriteHeader(200) 
  json.NewEncoder(w).Encode(queryResult)
}

//processRow queries the DB for a contract with ID value of name.
func getRow(contractName *string) *ContractVulnerabilityInfo {
var storage ContractVulnerabilityInfo //stores row to encode

//Login to database
...
scanErr := db.QueryRow("SELECT * FROM contracts WHERE ContractAddress=?;", &contractName).Scan(&storage.ContractAddress, &storage.IntegerOverflow, &storage.IntegerUnderflow, &storage.DOS, &storage.ExceptionState, &storage.ExternalCall, &storage.ExternalCallFixed, &storage.MultipleCalls, &storage.DelegateCall, &storage.PredictableEnv, &storage.TxOrigin, &storage.EtherWithdrawal, &storage.StateChange, &storage.UnprotectedSelfdestruct, &storage.UncheckedCall)
...
return &storage
}

My app.yaml file should allow me to deploy this flex app and does:

runtime: go1.12
env: flex

handlers:
- url: /.* 
  script: _server # my server.go file handles all endpoints

automatic_scaling:
  max_num_instances: 1

resources:
  cpu: 1
  memory_gb: 0.5 
  disk_size_gb: 10

env_variables:
  # user:password@unix(/cloudsql/INSTANCE_CONNECTION_NAME)/dbname
  MYSQL_CONNECTION: root:root@unix(/cloudsql/haveibeenexploited:us-west1:hibe)/mythril

# https://cloud.google.com/sql/docs/mysql/connect-app-engine
beta_settings:
        cloud_sql_instances: haveibeenexploited:us-west1:hibe

I am able to query the database successfully on localhost.Localhost correctly shows address

However, whenever I try to implement and push to AppEngine, when I query something that should be in the database, it does not show up in the remote App! App Engine does not show address in database. Furthermore, I get a status code of '0' returned, which indicates to me that the server function isn't even being called at all ('200' is what I expect if successful or some other error message.').

Summary

I can't wrap my head around this bug. What should work locally should work remotely. Also, I can't debug this app probably because Stackdriver does not support flex apps and the devserver Google Cloud provides does not support Go Apps.

I believe the primary issue is with Go not speaking to the React element correctly or the routing not being taken care of appropriately.

1) The problem does not lie with MySql connection/database access - I changed my route to only be one page, turned off React, and included a hardcoded query. The result on localhost. The result on App Engine

2) There is an issue in either a) my routing or b) the interaction between React and Go. 3) Go seems to start correctly... at least when React is not started.

Any help is appreciated.

EDIT I believe that the go app indeed is still running, but the searchfunction is failing for whatever reason. The reason I believe this is because when I add another route for haveibeenexploited.com/hello, it works.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题