diff --git a/CasaOS b/CasaOS new file mode 100755 index 0000000..1c7089c Binary files /dev/null and b/CasaOS differ diff --git a/UI b/UI index 645e6ca..60d08a6 160000 --- a/UI +++ b/UI @@ -1 +1 @@ -Subproject commit 645e6cac7dcc188d310b7fa7add3d03688021d23 +Subproject commit 60d08a6b73b361578c7e440af63d3179de16fba9 diff --git a/go.mod b/go.mod index 3417e63..dd072c1 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/go-ini/ini v1.62.0 github.com/go-ole/go-ole v1.2.5 // indirect github.com/go-openapi/jsonreference v0.19.6 // indirect - github.com/go-openapi/spec v0.20.3 // indirect + github.com/go-openapi/spec v0.20.4 // indirect github.com/go-openapi/swag v0.19.15 // indirect github.com/go-playground/validator/v10 v10.6.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -40,6 +40,7 @@ require ( github.com/leodido/go-urn v1.2.1 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.11 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -57,7 +58,7 @@ require ( github.com/smartystreets/goconvey v1.6.4 // indirect github.com/spf13/cobra v1.2.1 // indirect github.com/swaggo/gin-swagger v1.3.0 - github.com/swaggo/swag v1.7.0 + github.com/swaggo/swag v1.7.3 github.com/tidwall/gjson v1.8.0 github.com/tidwall/pretty v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.6 // indirect @@ -67,13 +68,13 @@ require ( golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 golang.org/x/mod v0.5.0 // indirect - golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167 // indirect + golang.org/x/net v0.0.0-20211020060615-d418f374d309 // indirect golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f - golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac // indirect + golang.org/x/sys v0.0.0-20211020174200-9d6173849985 // indirect golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.5 // indirect + golang.org/x/tools v0.1.7 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0 // indirect google.golang.org/grpc v1.41.0 // indirect diff --git a/go.sum b/go.sum index 3250576..a841f9d 100644 --- a/go.sum +++ b/go.sum @@ -325,6 +325,7 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w= github.com/gin-contrib/gzip v0.0.2 h1:VMBkd4ZB1Hl7e1lOA5gEZ/qdD3d9vLIq57xKWgPCCV8= @@ -373,6 +374,8 @@ github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8 github.com/go-openapi/spec v0.19.14/go.mod h1:gwrgJS15eCUgjLpMjBJmbZezCsw88LmgeEip0M63doA= github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= @@ -396,6 +399,7 @@ github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblf github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= @@ -776,6 +780,7 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/shirou/gopsutil/v3 v3.21.5 h1:YUBf0w/KPLk7w1803AYBnH7BmA+1Z/Q5MEZxpREUaB4= github.com/shirou/gopsutil/v3 v3.21.5/go.mod h1:ghfMypLDrFSWN2c9cDYFLHyynQ+QUht0cv/18ZqVczw= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= @@ -837,6 +842,8 @@ github.com/swaggo/gin-swagger v1.3.0/go.mod h1:oy1BRA6WvgtCp848lhxce7BnWH4C8Bxa0 github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+tv8Y= github.com/swaggo/swag v1.7.0 h1:5bCA/MTLQoIqDXXyHfOpMeDvL9j68OY/udlK4pQoo4E= github.com/swaggo/swag v1.7.0/go.mod h1:BdPIL73gvS9NBsdi7M1JOxLvlbfvNRaBP8m6WT6Aajo= +github.com/swaggo/swag v1.7.3 h1:ucB7irEdRrhjmW+Z1Ss4GjO68oPKQFjSgOR8BCAvcbU= +github.com/swaggo/swag v1.7.3/go.mod h1:zD8h6h4SPv7t3l+4BKdRquqW1ASWjKZgT6Qv9z3kNqI= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -870,7 +877,9 @@ github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxW github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= @@ -890,6 +899,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= @@ -1029,8 +1039,11 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167 h1:eDd+TJqbgfXruGQ5sJRU7tEtp/58OAx4+Ayjxg4SM+4= golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211020060615-d418f374d309 h1:A0lJIi+hcTR6aajJH4YqKWwohY4aW9RO7oRMcdv+HKI= +golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1148,11 +1161,14 @@ golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927052749-1cf2251ac284 h1:lBPNCmq8u4zFP3huKCmUQ2Fx8kcY4X+O12UgGnyKsrg= golang.org/x/sys v0.0.0-20210927052749-1cf2251ac284/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac h1:oN6lz7iLW/YC7un8pq+9bOLyXrprv2+DKfkJY+2LJJw= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1234,6 +1250,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main b/main new file mode 100755 index 0000000..d85b79f Binary files /dev/null and b/main differ diff --git a/main.go b/main.go index ed1de05..cae0f9e 100644 --- a/main.go +++ b/main.go @@ -11,16 +11,16 @@ import ( loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/route" "github.com/IceWhaleTech/CasaOS/service" - "github.com/gin-gonic/gin" "github.com/robfig/cron" "gorm.io/gorm" ) var sqliteDB *gorm.DB -var swagHandler gin.HandlerFunc var configFlag = flag.String("c", "", "config address") +var showUserInfo = flag.Bool("show-user-info", false, "show user info") + func init() { flag.Parse() config.InitSetup(*configFlag) @@ -31,21 +31,27 @@ func init() { service.MyService = service.NewService(sqliteDB, loger2.NewOLoger()) } -// @title Oasis API +// @title casaOS API // @version 1.0.0 // @contact.name lauren.pan // @contact.url https://www.zimaboard.com // @contact.email lauren.pan@icewhale.org -// @description Oasis v1版本api -// @host 192.168.2.114:8089 +// @description casaOS v1版本api +// @host 192.168.2.217:8089 // @securityDefinitions.apikey ApiKeyAuth // @in header // @name Authorization // @BasePath /v1 func main() { + if *showUserInfo { + fmt.Println("CasaOS User Info") + fmt.Println("UserName:" + config.UserInfo.UserName) + fmt.Println("Password:" + config.UserInfo.PWD) + return + } //model.Setup() //gredis.Setup() - r := route.InitRouter(swagHandler) + r := route.InitRouter() //service.SyncTask(sqliteDB) cron2 := cron.New() //创建一个cron实例 //执行定时任务(每5秒执行一次) diff --git a/model/sys_common.go b/model/sys_common.go index d74b436..fb61c2f 100644 --- a/model/sys_common.go +++ b/model/sys_common.go @@ -62,4 +62,5 @@ type RedisModel struct { type SystemConfig struct { ConfigStr string `json:"config_str"` WidgetList string `json:"widget_list"` + ConfigPath string `json:"config_path"` } diff --git a/pkg/config/init.go b/pkg/config/init.go index 4505066..339c1e0 100644 --- a/pkg/config/init.go +++ b/pkg/config/init.go @@ -2,14 +2,15 @@ package config import ( "fmt" - "github.com/IceWhaleTech/CasaOS/model" - "github.com/go-ini/ini" "log" "os" "path" "path/filepath" "runtime" "strings" + + "github.com/IceWhaleTech/CasaOS/model" + "github.com/go-ini/ini" ) //系统配置 @@ -55,6 +56,7 @@ func InitSetup(config string) { mapTo("redis", RedisInfo) mapTo("server", ServerInfo) mapTo("system", SystemConfigInfo) + SystemConfigInfo.ConfigPath = configDir // AppInfo.ProjectPath = getCurrentDirectory() //os.Getwd() } diff --git a/pkg/utils/version/version.go b/pkg/utils/version/version.go index 77bc0ab..a3551e7 100644 --- a/pkg/utils/version/version.go +++ b/pkg/utils/version/version.go @@ -2,13 +2,14 @@ package version import ( json2 "encoding/json" + "strconv" + "strings" + "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" "github.com/IceWhaleTech/CasaOS/types" "github.com/tidwall/gjson" - "strconv" - "strings" ) func IsNeedUpdate() (bool, model.Version) { @@ -35,3 +36,23 @@ func IsNeedUpdate() (bool, model.Version) { } return false, version } + +//a版本大于b版本 +func VersionCompared(a string, b string) bool { + v1 := strings.Split(a, ".") + v2 := strings.Split(b, ".") + for len(v1) < len(v2) { + v1 = append(v1, "0") + } + for len(v2) < len(v1) { + v2 = append(v2, "0") + } + for i := 0; i < len(v1); i++ { + a, _ := strconv.Atoi(v1[i]) + b, _ := strconv.Atoi(v2[i]) + if a > b { + return true + } + } + return false +} diff --git a/route/doc.go b/route/doc.go index 5716c8e..1bac9a9 100644 --- a/route/doc.go +++ b/route/doc.go @@ -1,13 +1,14 @@ +//go:build doc // +build doc package route import ( - _ "github.com/IceWhaleTech/CasaOS/docs" ginSwagger "github.com/swaggo/gin-swagger" - "github.com/swaggo/gin-swagger/swaggerFiles" + swaggerFiles "github.com/swaggo/gin-swagger/swaggerFiles" ) func init() { + // swagHandler = ginSwagger.WrapHandler(swaggerFiles.Handler) swagHandler = ginSwagger.WrapHandler(swaggerFiles.Handler) } diff --git a/route/route.go b/route/route.go index 857a5de..b81ac06 100644 --- a/route/route.go +++ b/route/route.go @@ -3,6 +3,7 @@ package route import ( "net/http" + _ "github.com/IceWhaleTech/CasaOS/docs" "github.com/IceWhaleTech/CasaOS/middleware" "github.com/IceWhaleTech/CasaOS/pkg/config" jwt2 "github.com/IceWhaleTech/CasaOS/pkg/utils/jwt" @@ -13,7 +14,7 @@ import ( var swagHandler gin.HandlerFunc -func InitRouter(swagHandler gin.HandlerFunc) *gin.Engine { +func InitRouter() *gin.Engine { r := gin.Default() r.Use(middleware.Cors()) @@ -30,8 +31,11 @@ func InitRouter(swagHandler gin.HandlerFunc) *gin.Engine { //登录 r.POST("/v1/user/login", v1.Login) - r.GET("/debug", v1.GetSystemConfigDebug) + r.GET("/v1/guide/check", v1.GetGuideCheck) + r.GET("/debug", v1.GetSystemConfigDebug) + //设置用户 + r.POST("/v1/user/setusernamepwd", v1.Set_Name_Pwd) v1Group := r.Group("/v1") v1Group.Use(jwt2.JWT(swagHandler)) @@ -39,8 +43,7 @@ func InitRouter(swagHandler gin.HandlerFunc) *gin.Engine { v1UserGroup := v1Group.Group("/user") v1UserGroup.Use() { - //设置用户 - v1UserGroup.POST("/setusernamepwd", v1.Set_Name_Pwd) + //chang head v1UserGroup.POST("/changhead", v1.Up_Load_Head) //chang user name diff --git a/route/v1/docker.go b/route/v1/docker.go index 9e648b2..3468a1e 100644 --- a/route/v1/docker.go +++ b/route/v1/docker.go @@ -3,6 +3,12 @@ package v1 import ( "bytes" json2 "encoding/json" + "net/http" + "reflect" + "strconv" + "strings" + "time" + "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/docker" upnp2 "github.com/IceWhaleTech/CasaOS/pkg/upnp" @@ -19,11 +25,6 @@ import ( "github.com/gorilla/websocket" "github.com/jinzhu/copier" uuid "github.com/satori/go.uuid" - "net/http" - "reflect" - "strconv" - "strings" - "time" ) var upgrader = websocket.Upgrader{ @@ -283,6 +284,16 @@ func InstallApp(c *gin.Context) { //} //step:创建容器 + // networkName, err := service.MyService.Docker().GetNetWorkNameByNetWorkID(appInfo.NetworkModel) + // if err != nil { + // //service.MyService.Redis().Set(id, "{\"id\"\""+id+"\",\"state\":false,\"message\":\""+err.Error()+"\",\"speed\":80}", 100) + // installLog.State = 0 + // installLog.Speed = 75 + // installLog.Type = types.NOTIFY_TYPE_ERROR + // installLog.Message = err.Error() + // service.MyService.Notify().UpdateLog(installLog) + // return + // } containerId, err := service.MyService.Docker().DockerContainerCreate(dockerImage+":"+dockerImageVersion, id, m, appInfo.NetworkModel) installLog.ContainerId = containerId if err != nil { @@ -873,12 +884,17 @@ func UpdateSetting(c *gin.Context) { envsStr, _ := json2.Marshal(m.Envs) volumesStr, _ := json2.Marshal(m.Volumes) devicesStr, _ := json2.Marshal(m.Devices) - if !reflect.DeepEqual(string(portsStr), appInfo.Ports) || !reflect.DeepEqual(string(envsStr), appInfo.Envs) || !reflect.DeepEqual(string(volumesStr), appInfo.Volumes) || m.PortMap != appInfo.PortMap { + if !reflect.DeepEqual(string(portsStr), appInfo.Ports) || !reflect.DeepEqual(string(envsStr), appInfo.Envs) || !reflect.DeepEqual(string(volumesStr), appInfo.Volumes) || m.PortMap != appInfo.PortMap || m.NetworkModel != appInfo.NetModel { var newUUid = uuid.NewV4().String() var err error - containerId, err = service.MyService.Docker().DockerContainerCreate(appInfo.Image+":"+appInfo.Version, newUUid, cpd, appInfo.NetModel) + // networkName, err := service.MyService.Docker().GetNetWorkNameByNetWorkID(appInfo.NetModel) + // if err != nil { + // c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) + // return + // } + containerId, err = service.MyService.Docker().DockerContainerCreate(appInfo.Image+":"+appInfo.Version, newUUid, cpd, m.NetworkModel) if err != nil { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) @@ -980,6 +996,7 @@ func UpdateSetting(c *gin.Context) { appInfo.Icon = m.Icon appInfo.Volumes = string(volumesStr) appInfo.Devices = string(devicesStr) + appInfo.NetModel = m.NetworkModel appInfo.Position = m.Position appInfo.EnableUPNP = m.EnableUPNP appInfo.Restart = m.Restart diff --git a/route/v1/system.go b/route/v1/system.go index 5447669..fecd05b 100644 --- a/route/v1/system.go +++ b/route/v1/system.go @@ -53,10 +53,8 @@ func CheckVersion(c *gin.Context) { // @Success 200 {string} string "ok" // @Router /sys/update [post] func SystemUpdate(c *gin.Context) { - fmt.Println("开始更新") need, version := version.IsNeedUpdate() if need { - fmt.Println("进入更新") service.MyService.System().UpdateSystemVersion(version.Version) } c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS)}) @@ -112,7 +110,7 @@ func GetWidgetConfig(c *gin.Context) { // @Tags sys // @Security ApiKeyAuth // @Success 200 {string} string "ok" -// @Router /sys/widget/config[post] +// @Router /sys/widget/config [post] func PostSetWidgetConfig(c *gin.Context) { buf := make([]byte, 1024) n, _ := c.Request.Body.Read(buf) @@ -125,3 +123,25 @@ func PostSetWidgetConfig(c *gin.Context) { Data: json.RawMessage(config.SystemConfigInfo.WidgetList), }) } + +// @Summary 检查是否进入引导状态 +// @Produce application/json +// @Accept application/json +// @Tags sys +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /guide/check [get] +func GetGuideCheck(c *gin.Context) { + initUser := false + if config.UserInfo.UserName == "admin" && config.UserInfo.PWD == "zimaboard" && version.VersionCompared("0.1.7", types.CURRENTVERSION) { + initUser = true + } + data := make(map[string]interface{}, 1) + data["need_init_user"] = initUser + c.JSON(http.StatusOK, + model.Result{ + Success: oasis_err.SUCCESS, + Message: oasis_err.GetMsg(oasis_err.SUCCESS), + Data: data, + }) +} diff --git a/route/v1/user.go b/route/v1/user.go index 7ad949f..99b88c3 100644 --- a/route/v1/user.go +++ b/route/v1/user.go @@ -2,13 +2,16 @@ package v1 import ( "fmt" + "net/http" + "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" jwt2 "github.com/IceWhaleTech/CasaOS/pkg/utils/jwt" oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err" + "github.com/IceWhaleTech/CasaOS/pkg/utils/version" "github.com/IceWhaleTech/CasaOS/service" + "github.com/IceWhaleTech/CasaOS/types" "github.com/gin-gonic/gin" - "net/http" ) var user_service service.UserService @@ -32,7 +35,7 @@ func Set_Name_Pwd(c *gin.Context) { username := c.PostForm("username") pwd := c.PostForm("pwd") //老用户名是否存在即新用户名和密码的验证 - if len(config.UserInfo.UserName) > 0 || len(username) == 0 || len(pwd) == 0 { + if (!(config.UserInfo.UserName == "admin" && config.UserInfo.PWD == "zimaboard" && version.VersionCompared("0.1.7", types.CURRENTVERSION)) && len(config.UserInfo.UserName) > 0) || len(username) == 0 || len(pwd) == 0 { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) return @@ -69,15 +72,18 @@ func Login(c *gin.Context) { return } - //if config.UserInfo.UserName == username && config.UserInfo.PWD == pwd { - if username == "admin" && pwd == "admin" { - token := jwt2.GetToken(username, pwd) + if config.UserInfo.UserName == username && config.UserInfo.PWD == pwd { + //if username == "admin" && pwd == "admin" { + + data := make(map[string]string, 2) + data["token"] = jwt2.GetToken(username, pwd) + data["version"] = types.CURRENTVERSION //user_service.SetUser("", "", token, "", "") c.JSON(http.StatusOK, model.Result{ Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), - Data: token, + Data: data, }) return } diff --git a/service/docker.go b/service/docker.go index 5055338..b59b484 100644 --- a/service/docker.go +++ b/service/docker.go @@ -59,6 +59,7 @@ type DockerService interface { DockerContainerCommit(name string) DockerNetworkModelList() []types.NetworkResource DockerImageInfo(image string) + GetNetWorkNameByNetWorkID(id string) (string, error) } type dockerService struct { @@ -92,6 +93,19 @@ func DockerNetwork() { cli.NetworkCreate(context.Background(), docker.NETWORKNAME, types.NetworkCreate{}) } +//根据网络id获取网络名 +func (ds *dockerService) GetNetWorkNameByNetWorkID(id string) (string, error) { + cli, _ := client2.NewClientWithOpts(client2.FromEnv) + defer cli.Close() + filter := filters.NewArgs() + filter.Add("id", id) + d, err := cli.NetworkList(context.Background(), types.NetworkListOptions{filter}) + if err == nil && len(d) > 0 { + return d[0].Name, nil + } + return "", err +} + //拉取镜像 func DockerPull() { @@ -409,6 +423,7 @@ func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId s res.Devices = append(res.Devices, container.DeviceMapping{PathOnHost: p.Path, PathInContainer: p.ContainerPath}) } } + hostConfingBind := []string{} // volumes bind volumes := []mount.Mount{} for _, v := range m.Volumes { @@ -441,6 +456,7 @@ func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId s Target: v.ContainerPath, }) + hostConfingBind = append(hostConfingBind, v.Path+":"+v.ContainerPath) } rp := container.RestartPolicy{} diff --git a/service/system.go b/service/system.go index 27dd724..0f156ec 100644 --- a/service/system.go +++ b/service/system.go @@ -16,7 +16,6 @@ type systemService struct { } func (s *systemService) UpdateSystemVersion(version string) { - s.log.Error(version) //command2.OnlyExec(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version) //s.log.Error(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version) s.log.Error(command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/tools.sh ;update " + version)) diff --git a/service/user.go b/service/user.go index aa91cbd..21ba661 100644 --- a/service/user.go +++ b/service/user.go @@ -1,10 +1,11 @@ package service import ( - "github.com/IceWhaleTech/CasaOS/pkg/config" "io" "mime/multipart" "os" + + "github.com/IceWhaleTech/CasaOS/pkg/config" ) type UserService interface { @@ -37,7 +38,7 @@ func (c *user) SetUser(username, pwd, token, email, desc string) error { config.Cfg.Section("user").Key("Description").SetValue(desc) config.UserInfo.Description = desc } - config.Cfg.SaveTo("conf/conf.ini") + config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) return nil } diff --git a/types/system.go b/types/system.go index 7c533c9..2aef33d 100644 --- a/types/system.go +++ b/types/system.go @@ -1,4 +1,4 @@ package types -const CURRENTVERSION = "0.1.6" -const BODY = "