# ipa2s3 **Repository Path**: wakanoc/ipa2s3 ## Basic Information - **Project Name**: ipa2s3 - **Description**: No description available - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-06 - **Last Updated**: 2022-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### IPA2S3 将现有的 `ipa` 文件上传到S3加速并存档。 #### 如何使用 - cli 扫描模式 扫描目录下所有的`plist`文件分析,并上传到S3 生成下载页面 ``` ipa2s3 [扫描路径] ``` - web service 模式 ``` ipa2s3 -b -c ./config.json ``` + 存入一个在线 `plist` 地址,分析 `plist` 对应的安装文件、图片、应用描述。 上传到 [S3](https://aws.amazon.com/s3/) 后,使用 [CloudFront](https://aws.amazon.com/cn/cloudfront/) CDN 加速,并生成新的应用安装页面。 > 应用下载页面中的图片,应用名称及版本,都是根据 `plist` 里面描述, > 如若修改相关项目,请先修改 `plist` 后再次提交。 + 国内加速方案,直接上传到plist ipa 及图片文件到 阿里云OSS,然后执行上一步,同步到S3。 #### 功能 - 扫描模式 - 通过分析在线 URL,拉取 IPA 文件的S3 - 自动生成企业版 IOS APP 下载页面 (通过模板) - AWS Cloud Front (CDN)加速 - 阿里云OSS 文件直传 - 企业微信(WeChat Work)身份验证 #### 依赖 - [Alibaba Cloud OSS SDK for Go](https://github.com/aliyun/aliyun-oss-go-sdk) - [AWS SDK for Go](https://github.com/aws/aws-sdk-go) - [gorilla/mux](https://github.com/gorilla/mux) - [Golang logging library](https://github.com/op/go-logging) - [go-cache](https://github.com/patrickmn/go-cache) - [UUID package for Go language](https://github.com/satori/go.uuid) - [howett.net/plist](https://gitlab.howett.net/go/plist) #### 配置文件 ---- 该项目使用json文件进行配置,具体例子如下 ```json { "base": "${BASE_PATH}", "tpl": "${TEMPLATE_PATH}", "tmp": "${TEMP}", "s3": { "access_key": "${S3_APPKEY}", "secret_key": "${S3_SECRET}", "bucket": "${S3_BUCKET}", "region": "${S3_REGION}", "prefix": "${S3_PREFIX}" }, "cloud-front": { "enable": ${CLOUD_FRONT_ENABLE}, "host": "${CLOUD_FRONT_HOST}" }, "web": { "root": "${ROOT}", "listen": "${HOST}" }, "storage": { "s3": { "access_key": "${S3_APPKEY}", "secret_key": "${S3_SECRET}", "bucket": "${S3_BUCKET}", "region": "${S3_REGION}", "prefix": "${S3_PREFIX}" }, "aliyun-oss": { "access_key": "${OSS_APPKEY}", "secret_key": "${OSS_SECRET}", "bucket": "${OSS_BUCKET}", "endpoint": "${OSS_ENDPOINT}", "prefix": "${OSS_PREFIX}" } }, "wechat": { "work": { "appid": "${WECHAT_WORK_APPID}", "agentid": "${WECHAT_WORK_AGENTID}", "secret": "${WECHAT_WORK_SECRET}" } } } ``` - `web.listen` 启动http service时绑定的地址 - `web.root` http service使用的webroot - `tmp` 临时文件的保存路径,这些文件一般会在使用后马上删除,不过也不排除程序问题没有删除的文件。 - `tpl` 下载页面模板路径 - `s3` S3 相关配置 - `s3.prefix` S3 保存路径前缀 - `storage.s3` S3 相关配置 - `storage.aliyun-oss` 阿里云OSS 相关配置 - `storage.aliyun-oss.prefix` 阿里云OSS 保存路径前缀 - `cloud-front.enable` 是否启用 AWS cloud front (CDN) 加速 - `cloud-front.host` AWS cloud front 加速域名 - `wechat.work.appid` 企业微信,企业ID - `wechat.work.agentid` 企业微信,[自定义应用ID](https://open.work.weixin.qq.com/wwopen/helpguide/detail?t=selfBuildApp) - `wechat.work.secret` 企业微信,[自定义应用secret](https://open.work.weixin.qq.com/wwopen/helpguide/detail?t=selfBuildApp) #### 编译 ---- - 安装Golang环境, Go >= 1.14 - checkout 源码 - 在源码目录 执行` go mod vendor `签出所有的依赖库 - ` go build -o ipa2s3 . ` 编译成二进制可执行文件 - 执行文件 ` ipa2s3 -c ./config.json` #### 生成 `swagger` 文档 - 安装 [swagger-go](https://github.com/go-swagger/go-swagger) - 在项目目录执行 ```bash swagger generate spec -o ./webroot/swagger/swagger.json ``` #### Docker 此项目已经打包成docker 镜像 - 签出docker 镜像 ``` docker pull mmhk/ipa2s3:latest ``` - 环境变量,具体请参考 `config.json` 的说明。 |NAME|Default|Remark| |-|-|-| |HOST|`0.0.0.0:7990`|web 服务模式下,本地服务地址| |ROOT|`/app/webroot`|swagger-ui 存放的本地目录及webui,可以设置空来屏蔽 swagger-ui 的显示| |TEMPLATE_PATH| |下载页面模板路径| |TEMP| `/tmp` |临时文件的保存路径| |S3_APPKEY||| |S3_SECRET||| |S3_BUCKET||| |S3_REGION||| |S3_PREFIX|`/ipa/demo`|S3 保存路径前缀| |OSS_APPKEY||| |OSS_SECRET||| |OSS_BUCKET||| |OSS_ENDPOINT||| |OSS_PREFIX|`temp`|阿里云OSS 保存路径前缀| |WECHAT_WORK_APPID||企业微信,企业ID| |WECHAT_WORK_AGENTID||企业微信,[自定义应用ID](https://open.work.weixin.qq.com/wwopen/helpguide/detail?t=selfBuildApp)| |WECHAT_WORK_SECRET||企业微信,[自定义应用secret](https://open.work.weixin.qq.com/wwopen/helpguide/detail?t=selfBuildApp)| - 运行 ``` docker run --name ipa2s3 -p 7990:7990 mmhk/ipa2s3:latest ```