GithubHelp home page GithubHelp logo

ming123jew / atx-server Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openatx-archive/atx-server

0.0 0.0 0.0 1.32 MB

manage all the atx-agents

License: MIT License

JavaScript 32.47% Python 7.65% Go 24.17% CSS 2.70% Makefile 0.17% HTML 32.71% Dockerfile 0.13%

atx-server's Introduction

Deprecated

Please use https://github.com/openatx/atxserver2 instead.


ATX-SERVER

GitHub stars Build Status

Manage batch of atx-agents

Testerhome上相关文章

Install

重要:需要有go语言的基础,知道该如何编译一个go的程序

  1. Install and start rethinkdb
  2. Install go

Compile with go

$ go get -v github.com/openatx/atx-server
$ cd $GOPATH/src/github.com/openatx/atx-server
$ go build

Usage

launch rethinkdb

$ rethinkdb
Running rethinkdb 2.3.6 (CLANG 8.1.0 (clang-802.0.42))...
Running on Darwin 16.6.0 x86_64
...

launch atx-server

./atx-server --port 8000

Install atx-agent using uiautomator2 into android phone. your android phone and server running atx-server should in the same intranet.

Suppose server running atx-server got the ip 10.0.1.1, listen port 8000. Do the following command

$ pip install -U --pre uiautomator2
$ python -m uiautomator2 init 10.0.1.1:8000

open browser http://localhost:8000, you should see the device listed on the web.

Advanced usage

Set up https://www.dingtalk.com notification.

  1. Usage command flag

    ./atx-server --ding-token 13gb4db7c276d22e84f788fa693b729d53218b8e07d6ede43de79360c962 --port 8080
    
  2. Set up env var

    export DING_TOKEN="13gb4db7c276d22e84f788fa693b729d53218b8e07d6ede43de79360c962"
    ./atx-server --port 8080
    

APIs

/list 接口

其中udid是通过hwaddr, model, serial组合生成的

$ curl $SERVER_URL/list
[
    {
        "udid": "741AEDR42P6YM-2c:57:31:4b:40:74-M2_E",
        "ip": "10.240.218.20",
        "present": true,
        "ready": true,
        "using": true,
        "provider": null,
        "serial": "741AEDR42P6YM",
        "brand": "Meizu",
        "model": "M2 E",
        "hwaddr": "2c:57:31:4b:40:74",
        "agentVersion": "0.1.1",
        "battery": {},
        "display": {
            "width": 1080,
            "height": 1920
        }
    }
]

There are some fields you need pay attention.

  • present means device is online
  • ready is the thumb 👍 you can see and edit in the web
  • using means if device is using by someone

provider is a special field, if device is plugged into some machine which running u2init, the bellow info can be found in device info.

"provider": {
    "id": "33576428",
    "ip": "10.0.0.1",
    "port": 10000,
    "present": true  # provider online of not
}

if provider is null it means device is not plugged-in.

/devices/{query}/info

$ curl $SERVER_URL/devices/ip:10.0.0.1/info
# or
$ curl $SERVER_URL/devices/$UDID/info

返回值同/list的的单个结果,这里就不写了。

/version

atx-agent通过检测该接口确定是否升级

$ curl /version
{
    "server": "dev",
    "atx-agent": "0.0.7"
}

执行shell命令

$ curl -X POST -F command="pwd" $SERVER_URL/devices/{query}/shell
{
    "output": "/"
}

设备管理

占用、释放

状态码 成功200,失败403

占用设备

$ curl -X POST $SERVER_URL/devices/{query}/reserved
Success

释放设备

状态码 成功200,失败403

$ curl -X DELETE $SERVER_URL/devices/{query}/reserved
Release success

随机占用一台设备

$ curl -X POST $SERVER_URL/devices/:random/reserved
Success

Communication between provider(u2init) and server(atx-server)

Provider send POST to Server heartbeat info to let server known provider is online. It is also need to send the same data to Server in 15s or the Provider will be marked offline.

$ curl -X POST -F id=$PROVIDER_ID -F port=11000 $SERVER_URL/provider/heartbeat

You may need to add ip field if provider and server is not in the same network

$ PROVIDER_IP=10.0.0.1 # change to your provider ip
$ PROVIDER_ID=ccdd11ff # change to your provider id
$ curl -X POST \
    -F ip=$PROVIDER_IP \
    -F id=$PROVIDER_ID \
    -F port=11000 \
    $SERVER_URL/provider/heartbeat

Server response status 200 indicate success, or 400 and else means failure

Send using bellow command when there is device plugged-in

$ DEVICE_UDID="3578298f-b4:0b:44:e6:1f:90-OD103" # change to your device udid
$ DATA="{\"status\": \"online\", \"udid\": \"$DEVICE_UDID\"}"
$ curl -X POST \
    -F id=$PROVIDER_ID \
    -F port=11000 \
    -F data="$DATA"  $SERVER_URL/provider/heartbeat

Comminication between atx-agent and atx-server

It is complicated. Hard to write.

Docker

atx-server is dockerized (based on golang image) and depends on the official rethinkdb container. To build and run all services, use:

docker-compuse up --build

atx-server can be accessed from localhost:8000 and rethinkdb web console is available at localhost:8001, both specified in the compose file. rethinkdb data is stored at $PWD/data (host volume).

References and some good resources

LICENSE

MIT

atx-server's People

Contributors

codeskyblue avatar mingyuan-xia avatar danielyang990 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.