diff --git a/LICENSE b/LICENSE index 6a5d25a..9aa4274 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Alexey Krivonogov +Copyright (c) 2019-21 Alexey Krivonogov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/api.go b/api.go index 1ed0b1b..ee35271 100644 --- a/api.go +++ b/api.go @@ -106,116 +106,34 @@ func compileHandle(c echo.Context) error { } func runHandle(c echo.Context) error { - var ( - item *Script - src string - console bool - ) + var console bool open := true - name := c.QueryParam(`name`) if len(c.QueryParam(`silent`)) > 0 || cfg.HTTP.Host != Localhost { open = false } if len(c.QueryParam(`console`)) > 0 { console = true } - port, err := getPort() - if err != nil { - return jsonError(c, err) - } - if item = getScript(name); item == nil { - return jsonError(c, Lang(DefLang, `erropen`, name)) - } user := c.(*Auth).User - if err = ScriptAccess(item.Settings.Name, item.Settings.Path, user.RoleID); err != nil { - return jsonError(c, err) - } - if item.Settings.Unrun { - return jsonError(c, Lang(DefLang, `errnorun`, name)) - } - if err = AddHistoryRun(user.ID, name); err != nil { - return jsonError(c, err) - } - langCode := GetLangCode(user) - title := item.Settings.Title - if langTitle := strings.Trim(title, `#`); langTitle != title { - if val, ok := item.Langs[langCode][langTitle]; ok { - title = val - } else if val, ok := item.Langs[LangDefCode][langTitle]; ok { - title = val - } - } role, _ := GetRole(user.RoleID) - header := script.Header{ - Name: name, - Title: title, - AssetsDir: cfg.AssetsDir, - LogDir: cfg.Log.Dir, - CDN: cfg.CDN, - Console: console, - IsPlayground: cfg.playground, - IP: c.RealIP(), - User: *user, - Role: role, - ClaimKey: cfg.HTTP.JWTKey + sessionKey, - IsPro: storage.Trial.Mode > TrialOff, - Constants: storage.Settings.Constants, - Lang: langCode, - TaskID: lib.RndNum(), - ServerPort: cfg.HTTP.Port, - HTTP: &lib.HTTPConfig{ - Host: cfg.HTTP.Host, - Port: port, - Open: open, - Theme: cfg.HTTP.Theme, - Access: cfg.HTTP.Access, - }, - } - if header.IsPlayground { - header.Playground = &cfg.Playground - tasksLimit := cfg.Playground.Tasks - for _, item := range tasks { - if item.Status < TaskFinished { - tasksLimit-- - } - } - if tasksLimit <= 0 { - return jsonError(c, Lang(GetLangId(c.(*Auth).User), `errtasklimit`, cfg.Playground.Tasks)) - } - } - if src, err = GenSource(item, &header); err != nil { + rs := RunScript{ + Name: c.QueryParam(`name`), + Open: open, + Console: console, + User: *user, + Role: role, + IP: c.RealIP(), + } + if err := systemRun(&rs); err != nil { return jsonError(c, err) } - if storage.Settings.IncludeSrc { - if header.SourceCode, err = lib.GzipCompress([]byte(src)); err != nil { - return jsonError(c, err) - } - } - data, err := script.Encode(header, src) - if err != nil { - return jsonError(c, err) - } - if storage.Trial.Mode == TrialOn { - now := time.Now() - if storage.Trial.Last.Day() != now.Day() { - storage.Trial.Count++ - storage.Trial.Last = now - if storage.Trial.Count > TrialDays { - storage.Trial.Mode = TrialDisabled - SetActive(false) - } - if err = SaveStorage(); err != nil { - return jsonError(c, err) - } - } - } - if err = NewTask(header); err != nil { + if err := AddHistoryRun(user.ID, rs.Name); err != nil { return jsonError(c, err) } if console { - return c.Blob(http.StatusOK, ``, data.Bytes()) + return c.Blob(http.StatusOK, ``, rs.Data) } - return c.JSON(http.StatusOK, RunResponse{Success: true, Port: header.HTTP.Port, ID: header.TaskID}) + return c.JSON(http.StatusOK, RunResponse{Success: true, Port: rs.Port, ID: rs.ID}) } func pingHandle(c echo.Context) error { @@ -336,14 +254,7 @@ func tasksHandle(c echo.Context) error { (taskFlag&0x100 == 0x100 && user.ID == item.UserID) || (taskFlag&0x200 == 0x200 && user.RoleID == item.RoleID) var userName, roleName string - if IsProActive() { - if user, ok := GetUser(item.UserID); ok { - userName = user.Nickname - } - if role, ok := GetRole(item.RoleID); ok { - roleName = role.Name - } - } + userName, roleName = GetUserRole(item.UserID, item.RoleID) listInfo = append(listInfo, TaskInfo{ ID: item.ID, Status: item.Status, diff --git a/appinfo.go b/appinfo.go index 5f30d98..5617555 100644 --- a/appinfo.go +++ b/appinfo.go @@ -1,4 +1,4 @@ -// Copyright 2020 Alexey Krivonogov. All rights reserved. +// Copyright 2020-21 Alexey Krivonogov. All rights reserved. // Use of this source code is governed by a MIT license // that can be found in the LICENSE file. @@ -6,7 +6,7 @@ package main var appInfo = AppInfo{ Title: `Eonza`, - Copyright: `© Alexey Krivonogov, 2020`, + Copyright: `© Alexey Krivonogov, 2020-21`, Homepage: `https://www.eonza.org/`, Email: `eonza.dev@gmail.com`, Issue: `https://github.com/gentee/eonza/issues`, diff --git a/assets.go b/assets.go index 2b9d22a..ca9bf5d 100644 --- a/assets.go +++ b/assets.go @@ -389,7 +389,7 @@ IYiGnOcfAAA= name: "test-texts.yaml", local: "../eonza-assets/init/test-texts.yaml", size: 8530, - modtime: 1614600350, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/8xazW8bxxW/8694WMKg5ZDs7vJTGwiFP2LFqZ2kluGisA15uDtLTrPcZWdmacmKAEvp qQ6QS3vpIa0LFEWLBnCLulBdfxyMXJXlycm5Qf6OYvaLs8slRcpoEB2k3Zl5vzfvvXkf+0YMc07cPjNK @@ -438,7 +438,7 @@ AAA= name: "test-windows.yaml", local: "../eonza-assets/init/test-windows.yaml", size: 4537, - modtime: 1614848388, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/8RYzW7jNhC++ykGFhY+CCqabHbbEsihQNNTkRRJur0ssKClsS1EJl2SspOih919gb5D n6AoukDQou0ryG9UkNQPKcn2Ckg2pzgkv5nhR843HElUKmVzSUYAjC6RgEKpok3KEr6RIwCVqgwJTII3 @@ -499,7 +499,7 @@ tE/XQkH677E/AQAA///sgBH0LQYAAA== name: "tests.yaml", local: "../eonza-assets/init/tests.yaml", size: 1375, - modtime: 1614837714, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5SUsY7UMBCG+zzFKFsEilxBQWHpCiRaEDohUa6GZLJrNLFz9iR7R3dLCRUNr4GQTqLj FZI3Qnayq83u6aR0zh/P98947PEkos3GqwTAYE0KhLz4BEC0MCnIVuugr7IEoEHZBuUq7olSSb6Im8Ii @@ -516,171 +516,194 @@ hHGaYmSm1zKOppvWADJDOTX3MN4A1iPhDXOsLIiuncX2v/rf/b/h2/Aw7Pu/w374Af2f4aF/hGHfPwZ1 "/eonza-assets/init/welcome.yaml": { name: "welcome.yaml", local: "../eonza-assets/init/welcome.yaml", - size: 3773, - modtime: 1611291182, - compressed: ` -H4sIAAAAAAAC/7RWX28TSRJ/96co2oIkKI5JTvAwOJZOB+JOujtOB0seEIraM+XxLOPpUU87xvyRSCIt -SEFCWu3javdhv4AJCRgSzFeo/kar7vnjsWMnCGmf7Kmu+tWvq37d1QkqFUR+4lQAIt5FB/oYuqKLFQAV -qBAdWKpum5XqUgUgFH6IOxg6cKOiJKJTqWVhiehJF2uu8EzoDg97aEEBjMmB5zX7AXAP1QMul5nCbuwF -kq3CfezGtwK5vLKSuVxuCW9wuQLgdoLQkxgZoCIRqtoOlwFvhWj9y7kAwiBR+f8atHuR60Ak+pkFIOaS -dx1gLLOkoMZjXoJkZi8T9BqoQYwOsI0cyfo58LxI1ehsQKIGIW4yV4RCOlBdv37j+j+u3WTNalbmtQ5y -r9qodzaaBYx0wFjPT8PWWTkg6Yh+ELVFFnSWizLbaZa+ZbOhvOZ/Rd+5ErWS+GajrjxrarSa1Uj0q416 -q5ka60qejbwtoqccYq468wDWeBybtYtQTO+F5HKwECnTyUKg+tTObDFKhVhQvaWi/kmgMLHaLsJ9cyZU -iIUi2kJ2zxGCiFUgoqQkKoVPVPkzJXGDLWjx9wGUdrkIYLLN4gSX4Dam4IzHN8PlcpuFvHaeKL+BZXtw -ASJGXtQeFJ2JhAragcsN8EyHtoO2KyJvEjNJmB+LfwarULWVyQxbKQ9QAqy8L2X2Rqt5t90O3ICHYATj -GDFCg0NHYnuTdZSKE6de7/f7a2ji1oT0GSgufVSbbLsV8ugxaxZLjTpvFlvoYpJwHxeyL9fQ7SWqpUwJ -n72whsAVUaqEmhtIN7sRJRovB7qJ31JRZV6lOxiGpnt/qcSLgzQDUswCgGcsUNhNmPPwGbO+zGF/j+MQ -2Sowy4Y5MFVgblbXXNFlL1ZLMHnwfwJXikS01UKAbu6xGGQreBzE6AV8IUg/97CtngtyR5hhuRDBt8sp -h0cvzq3q36aq6mHbaPCCzvzw/3+fd9otwoKROleHS1fvZIPbhLIV2NyEa0sToeSKzBBzgsV9m7EuSc5H -VetjKz4r/p4MTUjmn3FOg3iU9FEWGBJ9fFJrB5E3A2EXHGjYZjSX166uNOrp/2w56YXKVmKi0O9NYrw2 -2cNbz71HmLgysB1h4IpIYaQ2mcnOZtN6mLjnZj2nKeWTmb5wQox81anMe+LkDXk605A0XakffRko84CL -EnEm4/S9+T/uo0V0oGp+8uvzfvpgrNqSPlx/VP0m7EJi/0oecHm39eMyM8VhK3DlCmSqK1ubsF6+0m5N -au5A1fiYzEuVkGfP2vT5CLCdUtkq3rcA5UeYU779VQfTCQAedgWkGS7NxIShKM0S85mPk9VGq3iibCFw -ieCH3APV4QoGogcdvoPgoRt46Nl8clDKGUvhS95dm8qXsr8dKZQGQk4Gdml6OnAPI292LE5c8mniwL2O -6IMvEc3zf9rHvIgMUIiuAm7PsuHoo7IcbXdBSEhidIP2IGUj+iaT7E3Vmn6hMb3TL2kM9JXG9IGGdEJj -OqSh3tNv5vTgggigQ6AjOqZTGtMXvav39Esa6p9oZL7piz6gT6B36bN+SSP6qveAvhowem/86JRO9UF5 -tM82Mx9MOQ2LZxN+0W+K7kKpvfSrPgALfqQPVkG/0nuG+2FqPdavaUQnNEp3k3J5V97PLL39lN683tMf -9JmG9IFGeo+OwWK8Nn9GdKrfnpUC/ab3LP6QDk2MfgN6nw7pmI5oTKd0YrZFIzpeIBH6ncY248cy2ZFB -0Hum9gZ2NjoVD/2sD+gdHRt/S1bv0pA+mX4c0Yl+m5bjRO/rVykJY/pIQ3pvzLY+n2kIWe30/tTG9S4d -0pg+Vf4MAAD//1fsqwG9DgAA + size: 5387, + modtime: 1616405065, + compressed: ` +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 +4ukCScUTe2hP7KvWfwMAAP//ZcmdRwsVAAA= `, }, "/eonza-assets/languages/en.yaml": { name: "en.yaml", local: "../eonza-assets/languages/en.yaml", - size: 6985, - modtime: 1614831443, - compressed: ` -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 + size: 7649, + modtime: 1616382267, + compressed: ` +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 `, }, "/eonza-assets/languages/ru.yaml": { name: "ru.yaml", local: "../eonza-assets/languages/ru.yaml", - size: 11208, - modtime: 1614831450, - compressed: ` -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 + size: 12208, + modtime: 1616382303, + compressed: ` +H4sIAAAAAAAC/5xaX28bSXJ/708xMGDcHSDLQB71YgTBIQGyQfY2yVOQh9awSQ40nBlPz5DSPYmUfd6F +fNatby8rZC3LPm9yT4ejKFGiSJH6CtXfKKiq7vlHypfNiy121/R0159f/ap65G6cZjsenJtDmJpDmMDY +jMxrIXfjHMffe3BvDmEFl+YQxnAHdzAV0veV1jsefAcrMzQjcwT3QvpZEEc8OoVbHIcJzMwJzfTVjge/ +g7kZwQwmsDTHcCtkq+X3WrwOXMCY5EfmtQdLWMHEHJk3HsxhBXcwhiVcmSMPJp4ZwtwcwgzuzQiXaMv+ +piUmHpzCDVzQvpf0ximKB7hNGdpH7mEFC1jiQzCFhXnNgriDMR0Nz34Lc5gJ2eprlWVB1MFDfqD5r2GG +inPrb3ws7MRpkHV7pIAFXMIKd29GcCdkGMYDXgxuyAJfO/1HqJdTIaMoziRueceDb2FqhnAPCxSiV52s +m2fsmaEHKzNCLZljMzLHcOfBzAzNS1jBFe30jvV6hbr14AoWuNIYJmbE2iYz3cDY/AZmMLMvMb/B95sh +2kbIJAkDXzqbn5NFFrCCa1IH2T31u9bw5tC8JMPTijin93Y8+EgLj1GNpefpvUgNNk96pIAF7og8BKZo +0zyL/a7y90jBtSOYV/TAvKqpCfn5HMYeeQyvs+BNw63YTZXc2xAQu3mWkRH+ix65xxWELyNfoSu9R3PS +GmPhd2XUUWHcQQNSGLDBTzzSKYu519HGd+P9HQ/+BFOYwwWsYG6GPJEnLZkpuxu3devf65ufCj8OQ5lo +Rdpj6aU5ov27KRmG67MeTMyQnu/16JDv4cJ8Y5fEoYrjF1ObnN2Pe4lMVXaQ4B7+iEHqmSH55sSd2pyQ +WBAq0iYa6x59x5xY37CzMXtIEeseXJhjWHjmiIIAY2UJK4KDchGKR1TKGJbbwo8jjnfc+CdynZUFJT+O +dFxsYUlevSA9RVkQ5aXSrwghrlntwo+TA/vMffmuYqpdnuq+uhXS12ONqPRYCz+VuqtadLyFgzfhpwdJ +FndSmXTpFe7cLrrNC954niZS60GctkjFU5ibI7LIrQf3MKaX4klaMghxoT9QSF6R+tEIK9GSmdyV5Cbf +EvIcIwZYlDQvhXW67yiIxqIlDyyqL3FZtZt3rMsvYAxXFAkt1e7LkNT2PfnFK+eUuKmVZ47gjvb1itVh +3oiWCv04agcpIuNbc4wy7JX4ouMtz7zCw3sIWxTMI5iiDO50UaC8OYYrRO4ChG8981v6SYFmRj83x794 +hi9TdKhP1edxOOgFmUodCNvFinSAEtpPgyT7/2/S/JYwYFTLXLilpFi56uY/e6x/RnjNycm8hhtzBFMz +MkPEkIkHV+bQHMElzMzL2powNi+9nz/WvxAtpX2K1XtayHogDmeJzLo7HvyPVdrEYiOMLaa1Ai13yYvR +wnNYmDfmlfkWljijIlmf4CM+hbf1AdGKB1EYy5YNiI+Ewa8YyRvhsL29XYjriixHVStPKKAwTpaNiGsd +RLIX+OScM/Q6uKtgPsKragUZmXZKFiH6UVsCBYJM9R4SsnutuxSM6bk4bTy1ModCRX7cCqKOAxb2FrIN +o5uKMrWfFaE7RGBbYjbCd12i0yB5YkwTKuqr/UBnDLxzsvt1EVlmSJE/Za7FTiLU85zYzQeLuSuh0lT1 +dglv0IMRCDyKxmt8AH8UecmckDmdA/NPyg4W5kuqU3U8c7yNb2kHKsS3nBNkTq0nVwncMY+ZE0xb5qT0 +6hVcmBNiHFUedkfL9pTWssNutCLJb0pwWcEFsh0kCRcwhyk+EAX+XiR7ym0FQ8jZnFe32yBlPqDGNI3i +NI8awflYb9g8IusNBhClpjmM0VVw+7hKnKgNi7AR0GVvCXKWJJpScLmzjHEsCeVBogecv9CNbNInAlPC +/YmlfDYIp+xSE4+A6hpmaF7vy1AedNI4j1q4cqqeN2310+zC6GUVvYZgf0W5mdR7hL2OayGUm69p5yt2 +moULZqokVh6zV6oMDl0wMgVAfnFBChibN5gLm8C4gon3GXV4//64/x9C9VV6kAU9zuBjuEaHhekWogoz +pS2CJSLAW8SkT3ASd4jcZYqjS8IDzh1q3w/zlrIYeEq+wfaxbBYzI3FVnKE4RG5Lm7zcJoXgya63hdoP +bAJiEk8DPz17Urq8xZ8U82vFgzl+RivLUBVVYaO2GNmAmuPa/ArmZehvNwSEVHWg9+4HWRw5v/6e8Aix +0NY4FbMVhd3CHBFDmFZjeibUfsIF0QfWlS1sXtsJ5rSNOcdp1X7CJe6fEW1R5QjHoi0DpB+R8rMd7xGc +OUy8NEceWRjNOOPK0LymYMC6qlltreDW+2Uc/Vpu8wkJApy+dx7Rawh5q2Hdln0sCRWi+nqNiu5SgP6P +hBCLp3DuEvTmiMKHbCSewh1u9gU/ia8LQlVZC1PADAkfl65zV6DATLSDKNBdzjXEil8V1IGn6ChVSyJy +teOwRQyq2KMdqm2ooBgz0Y7TTpwxquFi7D+zGn19hlI92jXu7o4WTXtIXZmalonoBUuYY5JgvH1UPrdT +VMNoLYoDRHHyXXy1M2qN6HOouO5AmXCrZOsRvU+Xe2TNkvdUspQ5Ee088m0N/6M5giXMLRlwE7o+AzPR +UZFKKZGXtVgnjHexbkFv/j0xogvK0kXTgo1m0wSmZdFVYWJR/g5W5hvzWnSDVgHYNoxwKEuJ5tvhsuKe +8apYZVCQjshrpqIb6CxOD5pFrujGZPTfU3Ew4S6F6Ma0aeuaQ1tZ479j0Y3zlMrfsRmKbtYLmR/9w7/+ +0xceZR0iSSJoYzVXr+NgKoJ2ES9Y69j2gPP+zcESdKI4Zc+8xARCO6+ywqBnMeOU6kpGDB7MgixU9Zm1 +VCOCiIBfpz6BMxtkUvKpejPm1jZjRBC1Y1p66Xy6YI1B1FUp5YAzgrkF4VNlx1GQuQLsjOkzOwYiGQJz +rSYTQdSXYdByhG1TyUakghnckjoTeFYHGEgr7RocxmdUSnBL4bhZiVrJBwvEzeuHMuqkBFx/wRKVdDTh +iD8kgx6ZQzM0xySYM0G0kiKUOnM9oXNYFQpDgrupE+QymBnaAnBMrZww8GUnVaqnIlT9DzCjNL+EG5hR +ULB6KeIvqS33daHiMPBVpFWehjteN8sSvfP06WAw2FaULeK08zTNn7ZiXz+1ktvo+yJkR/5oK7cVHoZa +ST/gO/DvsnPxluJ0BVdUFWJMXBK0z2sdjTDuBIg8by38zXAkVH1qXH1ymsDa3q6BB4873P996wiDHSpS +LdxY4SJH2oRrXnpl4Vpl3TCFW9FTUb7jwTt64RvB1J7LpfdwwZxuA4IiBRO9IMqphn/n+BiMRS+OqJ59 +52gYj1Q6H46gvSKvolndpfB+BH/BAm0LfmTu9g59dgt+h/5Bv+B2C07NG1jyfwucm8DlFnzEjW1RSTba +gjNYIRP8Dp33kejFfYX1LFnximCqbLORc9yQDBW2D0pUc6eIpO2gfyB64arbSHVca/g94TK6Z1GyHtX6 +XZHKBnHKLbUpQUaEfJdClyH+Ems+wb3XRjcdR/1uEG7s1U/s5l0f/M1a1x4frxCUM9rUiglvg6ugpKMT +Z9Z7au2JSA1svX5m8aDZ8EGRorFSEapeG0RqwIev3GBwybQsX8ocZ2jVt5/Z/PORscQcUakxbagapiTr +KseqKHXoKnWiqNapGDowIUxH+92JKGZYxd3Gkar84HP9Af+Seq/SDCQSy636obNOBYd5blbbA243zoJ2 +pZX/ieCArgZcaxkVkPd2FefpGZ9WxO124Acy1EHG7aIX5ICzCichtY8RQUS8t+P98z+KOFJYYuGuKeav +bAIeM1isJw9bP7+vXGjw4G4aD7RKm3OEhcSozRHccEUk4oRvfRKZcluM9rmiArzCn/i9Y4KMES4oqHQ5 +hR/gVMR5luSZLeYsl2aaSBgMYxH3VTpIWRvnthYjXVPCLzlVk5RY75iWC3AUrq3xmVuQRKaypzKVaibi +jXNUvOS8otxE6kzVOArHu20SntvLg0RmmUoje/Z3tmAdP1iwFkkwUam2t23nNpoaShdIqkJKAOeWaCWp +6gesAOvLd1QkHookjTup7PU4YTSr00bTDqUpyL9MY8x+ZTDzxOczc5LGT/oq1UEccWJ+nittwRYzqQ0z +kSpfRRmlmzPbCpxwC8NF2Tdl0wyl81RbLLete9qVuxPl3DkjeEhVO1W2HHN3PWyeVHUCnRH5xlWm3J7D +YbVvxy7NEfHNQ0cB141D4j2Z+d0d7yvV+eW+93f0jnvq6pdSPRlEti3y3vkJEZ2p7UhzO8acoGzcV3wh ++6neqKd2Q6PYNS9FqpJA67ze3HM3XI6oXTh4R/FQ+srWjXcWnVglz/Mgpfr0z9yVuLedrU09LFiJVGmV +/U1b/pT2yX0lIC+pGXvjNntFgfySUpkrqZd8gz0mqsKd4xmCJDW4idc/w23kYdaXrpd8Q3Z7zT1oCw02 +BU5rba8x6VvnZBf0yJvKlaDTCfvIOSGrK9FohgnkBwsD+FO73zATaRxne8pedJELTQnkqFKhDpbgBNdo +eeBSeaQx1XNIrM17ZYuGrKBl39revLSOwevghNTuJrgx61GTde6+EziGW5K3l3MbxflC7g3Jfebaha8Y +Kw3xb2G57cF/V293huvrT+ESVs+E9mX03GYk2wlesh1t4+FXX9laD7PU38fIw72/zbOuijLMwHEqtJKp +320FhOOn9vKaFFftvG3s3vCjrtvz4LOObZljoRGOguyAvy0gD7oncF9aWvRaaBVSi4wqgQu64tAqxJKr +GLOX0qiaE66/PGK0I4LcF/w1CIyFVlklDdXb2etsRVTunM/WLpq131WtPLRtp4VTNLkD5tK52GRkO6jr +o6gIGs+U66b+lc6PKxgtQtnvBNihaSW64W1eX4+JAODP2zJDuEbaDBa1hqi1po1eSgjrfQatQv6A5oyA +/c7h1JJL2fLd1W7XVZPAk/NaQ+dJGMvWJtO+KLuH9nuRKgqSTT5rsG6e2aroLRXz1dtCHUSdUNl7MccJ +7fNYtzGTLHtBOvi1KspQJDmHQu8FScEJ6pCk4zz1lR+3bBd+U+tFPw99zO3/8qsv6u1flwZ1JtOs2lxB +leGYau3ydf2omvTp7bBgkSwNiAI1LknL9GYPWFxO4GNZTm5KdxojXFHorBVECZblRehcoUMhlPJZJkxF +UTIMdt3jVTnOJRfUil4gBWatYnRmcVK/6a6nPgs3h/bLmv9jj/QZresUsHZx/DkV5Lucgs7JWi7v6HxX +23TZoACNLteGnEmMQ+eJbe59hAVdUl3wVRq+5YoeuGaPzXWiolaF9VRzq51V6/NUMwkszXoykh1bZs7s +RysjutI6ZE9Bs7wiUW3Pc8XX5AKhKIhkRuufVzFGZIqvBv5oed+xaF4o04BMlSSyvqTa/rPxZNnd24LI +4UDKL8GopxDDF9nm5xkFXsm0s1RGOnS9CFe2sC+S7XscfOcPGZuEWvJA73iPLOv/mvD1sWbqiP/zJyy3 +HuFS9Ts4Op9HFAhri3m9dN1+xMuzLXlzM87BP22hOmCTkQdxm68jNpA/DrXPkD9R/UxK9GVYvy9peLN4 +oH0q+jIN5C4n/fOmw9v5qEWFwfk6h6RUTXR/boYky92VTaKNPktfrt3w1J9Zwa2wNdROvQJ7oL7DYW6a +f3Rj3Kx6sGWeR3tRPIhybTtGU6JuE1tbV0qqTR8BPN4XecRE9uyBK/xG3yhPOqlsqSSNKyqyF6qYdL9M +Y1Gk0O+bVYLIkyy2H1edPvR9z/16u7raiKKq9d+++kLgkZvq33TME5LUD30LATMxkEFW3Pz9J0GQ/cKw +dgmIDlASFHtt1vzmE9dy7VwM7asCIwYyjcq6nbpiNqlcV6rNgVJ7te/NvPJGHbeq1F6ltVu5bCfyhdNF +b/etGW7BOSy34K0ZbcFHc7gFf8K/zuknXDwSB4q/Vx6jWt0nPUVfnge4+qf5Jy4/NkTseE2y4EJrsnam +Kl1t3jTly7nqE+WdR1PezTxJFROf2nM8tGFXNP4ESVJVvPhQsylvJwrZJI2fFFeWhTB5Xk2mrDgKoepw +TdaiayGYDeInbenj62VZMxUNGvuU9fYH9sD3obXJJ508qJy60Q4tRGvjhXRRUBRydqSUWPeENReokYXy +vFLvPbHDLCrE/wYAAP//YkE6ArAvAAA= `, }, @@ -1023,7 +1046,7 @@ urpH+8eu7WNXaZ/tT6fpbwAAAP//i0obn9AFAAA= name: "delete-registry-key.yaml", local: "../eonza-assets/scripts/delete-registry-key.yaml", size: 786, - modtime: 1614774113, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/4ySzWobMRSF93qKQ7xIC7HTH+hC6+6y66ZLo3huxsKKZirdaRjoos6mm9JnKPQFTIkh NCV9has3KtKMg2MIZDccXZ37naOJxGx9HbUCvLkkjYocMU0D1TZy6Kcr6hXAlh1pHE/meWpyrIDW8DIr @@ -1039,7 +1062,7 @@ Y9rBaj5AH86flTZC98hUfsmNbORObtN1+g75I3fpR/oG+Slb2aZ1uk5fZYO0lnvI77SWrfyVW8g/uZeb name: "delete-registry-value.yaml", local: "../eonza-assets/scripts/delete-registry-value.yaml", size: 1152, - modtime: 1615258969, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5xTwW4TMRC9+ytGyaGJaNLQCg6WeoITHCohBMfIyU627jr2YnsXVhQJyoELUo9ckfiB HBpRqeo/eP8I2d5NdytVIC6r1fPMe2+exwat5TI1lABItkYKCQq0ONGYcmN1NSmZKJAAWG4FUtgbzn3d @@ -1252,7 +1275,7 @@ zJQ/T3D/QY92+unc5XenAvgo/gQAAP//c7v7+hsDAAA= name: "foreach-csv.yaml", local: "../eonza-assets/scripts/foreach-csv.yaml", size: 821, - modtime: 1614601862, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5xSwYoUPRi85ykKhmV3YHZ++A8eAp4G9CIIDsx1yXR/OxPIpNsk3TKooHPxInjx5MVX WERk3WXbV/j6jSTpnnbao33pUF+lqlKJpxC03XgpAKt2JHFdOFLZ9jLztQCCDoYkzidXcTo5F0CpwjYi @@ -1305,7 +1328,7 @@ jAosBhuHQw94OnIOB9x3f8nxV75M59zzJW/Smvu0Th/B19zzT/6eLtInpPdpnc55w9fpAvwN6QP3fMU3 name: "foreach-registry-subkey.yaml", local: "../eonza-assets/scripts/foreach-registry-subkey.yaml", size: 1009, - modtime: 1614774124, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5xSwYoTQRC9z1c8EpbdlSS7KnhoyFE/wAW9BEJnppI06fTE7p7VIILuxYOiIH6AnxA0 Edlg/IWaP5KensREURZvPa+qXr16bxx5r8zIiQQwckoCw9ySTMdtSyPlvJ23XTGY0DwBvPKaBI6b/dDZ @@ -1323,7 +1346,7 @@ euZFI/kZAAD//1/G1XTxAwAA name: "foreach-registry-value.yaml", local: "../eonza-assets/scripts/foreach-registry-value.yaml", size: 1004, - modtime: 1614774134, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5yS0WoTQRSG7/cpfhJKW0nSquDFQC71ARTqTSBMdk+SIZPZODMbDSJob7xQLIgP4CME bVQMja9w9o1kZrcxEZTSu+U/Z77zn/OvI++VGTmRAEZOSWCYW5LpuG1ppJy3i/Zc6oISwCuvSeCw2Q+N @@ -1392,7 +1415,7 @@ NZ1gjwIAAA== name: "get-registry-value.yaml", local: "../eonza-assets/scripts/get-registry-value.yaml", size: 1311, - modtime: 1614831639, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/4xTz2/TPhS/+694ag9L9e26L0NwsLQTByQ4TAI0jpXbvGReXSfYTlAESDAOuyBx5Ah/ wi7VKqHxNzj/EbKdtEm3alyi6PP8+fHeszUaw2WqKQGQbIkUUjSHClOujaoOSyYKJACGG4EUDoZTd2h4 @@ -1510,32 +1533,48 @@ X7LHAAAA//+etb1f3gIAAA== `, }, + "/eonza-assets/scripts/markdown-to-html.yaml": { + name: "markdown-to-html.yaml", + local: "../eonza-assets/scripts/markdown-to-html.yaml", + size: 567, + modtime: 1616308507, + compressed: ` +H4sIAAAAAAAC/2yQv07zMBTFdz/FkTK0/dT2k77hG7x0YICBTlSslWmu0gjHDs5NEBJD1Zkn4ClQJSQW ++gzOGyHnX6lgs+6553fucUHMqUkKKQCjMpLIlLuP7aOZsZ1tOdMC4JQ1SYyidViJRgLIFW/DZF5wrNO7 +6G80J7OxcWqSRo+p2DSO8Ggm2iaaKtIS/wVQGlcaCXYlCWBLOv81OQhamUTClSJXTmWFFLPu0kq58Ph+ +4LybNYn8lJPEPwHYnFNrmpKAo4cydRR36T3NUVFqrpQ74w3TM2I4qaGRaZnrtu+FNRU5HpqALbomwLrN +WfbayuJqtbwWgCvPKP7VH/2nP/j3elfv/Ue980d/8G/1vn452f2ht/9E99rGxiTxLIAb4lvlxliM/wyV +FtNT6Wn/m5PpgFnZABnjsvX2C5hMxFcAAAD//xfqX403AgAA +`, + }, + "/eonza-assets/scripts/message.yaml": { name: "message.yaml", local: "../eonza-assets/scripts/message.yaml", - size: 4335, - modtime: 1607779636, - compressed: ` -H4sIAAAAAAAC/9xY327bthe+91McUChi/362mzRz16mJgS1dBxQoBqzDbqIgoeVjm61EOiTlJMsCrL0b -tlcYhr1BNiBYEKzZK9BvNJD6Y0lOkDToRTBfFNQRv+8cne8jS0ah1oyPld8A4DRGH2JUio6xAaCZjtCH -FW/XvvFWGgBDVKGL2IGLTKme+EC8rtLDiA28h153JGSsPALu1wCYYDQt89rniPKxDzJpAERiHOEMIx8e -NwASLhPug5YJNqZU0lj5jU5WGgsFL9fV1UfTtC478GG9ASCmmgnuvgeAcaYZjXzYT1DZeCdkMozQvUwx -Sst0qsY4Q3VKGXKgy2J/MxoleDVhGcf4SNQxNnbd/AMqOePjOgQPw4jG1GXSklE+vgKLUgpZR2oWo8qz -5Q3UeKirDcRDXWrgWr2BEvcTJnGYCZLzSNQDXZVCokoiPaOyRPfoWj1iNbYEOV+YKEuoKqazQRHbcImy -V6eMmNK5bJWPdBIX5RUOXij/qIJybVuCuegSTkvEhSuVSGSInVAMLd4hstpsyAeitIRQRELCJgRkrfe4 -t7UakICrA6bDCXyF+jsqmwGx9g5ICwIeUoUQkJJhAuKXOD7Z+vx5bzUgT+FVAeYjEZA2rLUK+FXmqfI8 -f/bsyXqvwmONWOMpW6mK/7K3/lkNj1Lm8CGOaBJpf/HSrZr8dRF1fDbqBq2Ak0VvUXdmVDI6iOrNzXYr -NZ7RdAVnxl/ZGLIZKH0U4SaJqRwz3pFsPNE+rEmMn5L+BoMwokptkhFVMKIdz3bes6P1Q5JDXTE+eJ4b -eKS/8ZD1Nx4O2axvM/Q9t3bSwMpiixp1UfDvqbMp5htZtXKMFM6o9IGQJQuH8dQH3E9olHmO46H2gayS -/FnogrT81ds7iw1AVlZUOGHRUCK3Ka72bLW83Lc/dLJHADF4DTP7zya8UIJ/K74evG5mviV5KtJqFQA2 -gv85QB9WoTAAicUQSduVv5hLpQSR6OJ5JCTM7HYMjKdZj4t3rphEw/83Ye+Y2PVIfCCfkjaQGZV2PNDc -Pllx7OODY8vUdHxtyOKtrtKy2TqxE7PNxM49tqvIbVDW5UENS1yPCmxATsjJXlHYSTHKv3WQaG2J27C3 -/eD4hWC8KRLdBtImrZOdvdbdLBPnin0M0xBStozdQa6zS3UZ1v2STso+uJqiZKLtWwnmdcUbb1mYbC9J -hbFfYveLml7ijROlSLhz71rs9r/70OMjVHds8hEq1+V2kfOWKbnwblhvXNx3/ex/jv+FJfLB4oWUhxjd -JGA6676LiFLeBw0lanm01NG6YG7W3TSjAyH1TZK5SXfjZ2MuJN6UIJ11nSfsVbFmgbLg+Ul/oaBOFSeV -Ezl5XBG4dCa8PcWTCkUu8od49+M7tbhm3fUI9427lNnjSH7LICknabXhJQ2laBJvoLlnz272Su7waR6A -0g3Mhy03hi9K7t9N/xrwaiIOSrd7gN20wJdFSCZXEJpfzen87fzd/Edzas7Nn+bUnJm/5z+bMzAX5r25 -NP+YC3NezmR+M5fmwpyav8zp/N38F5i/NZfm0vwx/8mcmffm3JyVCzC/L739NwAA///T7wof7xAAAA== + size: 4368, + modtime: 1616248768, + compressed: ` +H4sIAAAAAAAC/9xY327bthe+91McUChi/362mzRz16lNgK1dBxQoBqzDbqqioeVjmy1FuiTl2ssCrL0b +tlcYhr1BNiBYUazZK9BvNJD6Y0lOkDboRbBcGNQhv+8cne8jK1ajMUxMdNgCEDTBEBLUmk6wBWCY4RjC +VvDUzQRbLYAR6thH3MBHZtRMQyBBX5sRZ8PgetAfS5XogID/awFMkc+qvO6ZUzEJQaUtAC4nHOfIQ7jZ +AkiFSkUIRqXYmlFFEx22enlpLJaiWlffLGdZXW4Qwm4LQM4Mk8K/DwATzDDKQ3iRonbxXsxUzNFPZhht +VLbUYJKjepUMBdBncX9zylM8m7CKY2IsmxgXO2/9S6oEE5MmBBcxpwn1mYxiVEzOwKJSUjWRhiWoi2xF +Aw0uTL2BuDCVBu40G6jwRcoUjnJBCh6FZmjqUijUKTdzqip0N87VI9ETR1Dwxal2hLpmOheUiQtXKAdN +Ss60KWSrvaSXuCyvdPBa+Rs1lG/bBsxHN3BGIa5dqWWqYuzFcuTwHpHX5kIhEG0UxJJLBXsQkZ3BzcHd +7YhEQr9kJp7CV2i+o6odEWfviHQgEjHVCBGpGCYiYYXjk7uf3x9sR+Q2PCrBYiwj0oWdTgk/yzx1nvv3 +7t3aHdR4nBEbPFUr1fFfDnY/a+BRqQI+wjFNuQnXk37XFNNl1PO5qB90IkHWvUXTm1PF6JA3m5ufVnoy +p9kOzo2/dWfE5qDNkuMeGTE943QZjjkubpP96lRC1YSJnmKTqQlhR2HiFjCIOdV6j4yphjHtBU6UwI12 +F6SA+jpDCAI/CMj+nets/871EZv7DPuB31Z5wP9urc+wcR+l+J56H2Nx0tVfDbnGOVUhELLh8TiZhYAv +UspzUwpcmBDINimepSlJq215/GR9QqjalounjI8UCpfibFPXyyuM/UMvfwSQw2cwdz978EBL8a38evis +nRubFKlIp1MC2Bj+5wH7sA2lQ0giR0i6vvz1WqoUyNSUz2OpYO7Oa2Aiy3pYzvliUgP/34ODQ+I2LAmB +fEq6QOZUufHQCPfkJHKP1w4dU9vzdSGPd/raqHbnyC3MTxu39tBtM3+CuW0QNbDE96jERuSIHB2UhR2V +o+Jdh6kxjrgLB4+vHT6QTLRlarpAuqRz9OSgcznLJIViH8M0hFQt446Y8+xS36dNv2SL8heup6iY6PF7 +CRb05fNgU5j8sMmEcW/iDpSGXvK5F6VM+OTKtdgfkFehx0vUl2zyErXvcrfM+Z4phQwu2G9CXnX93L+e +/4Ut8sHixVTEyC8SMFt11UVEpa6ChgqNWm50tCmYX3U5zehQKnORZH7R5fjZREiFFyXIVp3nCXeXbFig +KnhxFVgraDLFSe2TndysCVz5aHx/ils1ikLkD/Hux3dqeQ+77CfcN/7W5j5HimsIyThJpwsPaaxkmwRD +IwL37ebu7B6f5QGoXNFCuOvH8EXF/U+z/y54NJUvK9d/gKdZgQ/LkErPILS/2uPVq9Xr1Y/22L6xf9pj +e2L/Xv1sT8C+te/sqf3HvrVvqpnsb/bUvrXH9i97vHq9+gVWr+ypPbV/rH6yJ/adfWNPqgXY3zdm/w0A +AP//y8gTNhARAAA= `, }, @@ -1694,6 +1733,25 @@ Y5zze7zj57jgZVzEe8RbXvILv4KfwB+8inNe8RuveM3reBMfftL/QIhRVZLEdU8AZ+TPleuk3AfZUTLU `, }, + "/eonza-assets/scripts/readme.yaml": { + name: "readme.yaml", + local: "../eonza-assets/scripts/readme.yaml", + size: 1149, + modtime: 1616405222, + compressed: ` +H4sIAAAAAAAC/4STz04bPRTF9/MU95sIhQgS+DYsRtBtWRSpKqibqopMfJNYeOyR7eFPC1IaVeqiSH0E +XgFVRU2BpK9w/UaVnUlI0qqdlX3P8e8ej22LzgnVs1kCoFiOGRhkPMcEwAknMYN6rR2EWj0BKJjrh0rL +Oi7FcW2r1upqk9socrSdaA+DWJG6J/EUZQY7CUAfZbGAD1PJVC8DUyYApTKlysCZEpOCGZbbLGlWkRye +u8VArVCIHdxFgRn8nwDowgmt4j4AupL1bAaFwVOBZ3NOX3COaolkT0SxQNpOnEF86mzQlUa1UKt3LAE4 +ZbLEqkdbdDta8Tl1tsTq0nSw2dEcYyyc7Wp5edAzuIxjAOtM3CXswZER+WHBOrj+HN1rZtbTIKSNRmUV +3eh8s/0W/tuD+m4d3lcKzA37zL402BXn68G6CWkN0gZcXv5B+IsSpRV4+A6rXDlPN2OWxu+etWPNL9aW +61eA0uI/ieluYfBZChvTP7IB6e5WrKy0uUqWsNkKZp6s0xeSG1Thv88OKWfmhOsz1XS62Xe5jKjF4wkz +U3n5/GzDZV85Rymsm46a8zsIaVpBQobFabxk6U761CPywzuIvGlKgPb0MR329RnsHx282ISDKjFoE+51 +SMKcQz57HADtacZXswdmyiUW3dCE7umWvtOtH/rrVS6N6IFGQD/9gO7oG32lWz+gkR/SHT34axrTBGji +h/4jTfyAHgOFRn5Ak2ClMY39Z/oB0X/vP/jhYii6CUb/KSwBeqQ7Gvsvya8AAAD//yvxKVZ9BAAA +`, + }, + "/eonza-assets/scripts/regex-find.yaml": { name: "regex-find.yaml", local: "../eonza-assets/scripts/regex-find.yaml", @@ -1908,7 +1966,7 @@ TYlcN6t5dwxXFNu9aeP0y46A/cvpMLnXyHf5en0gwT+au+aeN/zEz/zI2+a+eUDzvfmWnr/4qXkA/+YN name: "set-registry-value.yaml", local: "../eonza-assets/scripts/set-registry-value.yaml", size: 1344, - modtime: 1614833566, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/4xTwW4TMRC9+ytGyaG7ot1CKzhY6qk3EEKiCI6Vk52mblw72N5FK0CCXrggceSKxA9U lSJ6Kd/g/SNkezddp6noJcq+8XvzZp5t0FouZ4YSAMnOkYJBu6Nxxo3VzU7NRIUEwHIrkMLW+NgfGm8R @@ -2222,7 +2280,7 @@ OCV/rlwvfvT73wEAAP//DrshETQCAAA= name: "eonza.css", local: "../eonza-assets/themes/default/css/eonza.css", size: 3596, - modtime: 1614256294, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/7yUTW/jNhCG7/4VhI0C8SJSZK+zdRSg7RZY33rpoXdSHErEUhxhRPkDRf57oS9bku21 nLS9yBbfeYcz1MP5TaF1nuIRsL8njDVvqTaHkE03aB37uoMcU2DP7HfiVubT1zYudwcDIbNIKTfH1R3o @@ -6281,7 +6339,7 @@ lWyiRStWXn2nT7ayYoSLWrOqynfEF595Yv9/LSEhAudHEkeP/J50/pM/k85+8i1xHyLaI9c/QbU3y0YE name: "card.tpl", local: "../eonza-assets/themes/default/templates/card.tpl", size: 5483, - modtime: 1604473882, + modtime: 1616389165, compressed: ` H4sIAAAAAAAC/9RYzXLjuBG++ynamGgkl03KM6nkQImaOeaQQw6pXFyuKYhoiohBgAEgyo6sd08B/BEp UmMr3q3d1cVEo9E/H7o/AF6aRPPCgn0pMCYWn+38ObCYF4JaJMBZTBKqGVldAQAsGS8hEdSYmBQi+CuB @@ -6315,7 +6373,7 @@ fG/gG9xDdcgPkLk63CyOl4//BQAA///dywd5axUAAA== name: "cardlist.tpl", local: "../eonza-assets/themes/default/templates/cardlist.tpl", size: 4906, - modtime: 1613991917, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/8RWWY+juBZ+z684Rd80RB1Tqb47WfpuKum+jmbmJaoHBw4VTxmbsQ1JFOW/j2yWAEW6 ukfTah4SbOzvbN9ZVjpWLDdgTjmuPYNHc38kBrOcU4MesGTtpbSMqUq8zQTss0pYWb/CqiRGSm5YDkbm @@ -6350,7 +6408,7 @@ Zfo1vxsCoKNvdcyfgzu4HEsWN+0McRpmFAZVZaJ/bw9K9akqv27m9uHDDeA+W664NtoR/FspemoPWtq0 name: "deflists.tpl", local: "../eonza-assets/themes/default/templates/deflists.tpl", size: 159, - modtime: 1614680872, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/zSOsQrCQBBE+/2K+YAQ+xCtbASxEptjiiNZ5SA5JbfahPy7HK7d4/EGpi/Dkl52kOGZ i2HU+zkVK9hjlRCWmB+K9uiWFAAIob3EWckOwYWHJ9O5kKslm7Sr4bUS2eATp/dP3SqRW+NbzSMpbOSP @@ -6362,7 +6420,7 @@ m/Q7v/UNAAD///pr+DufAAAA name: "dialogs.tpl", local: "../eonza-assets/themes/default/templates/dialogs.tpl", size: 11037, - modtime: 1611291183, + modtime: 1615449360, compressed: ` H4sIAAAAAAAC/+xabXPbtrL+7l+xYa4u5YkoyS+J51Km++LUM3faSTsn7cl0PP4AkUsJxyDBAqBkHdf/ /QxAkAQpOnGT00w60w+2QWCxWOwu9nlA+lzGghYK1K7AyFN4p2Z3gcKsYEShBzSJvIStgrJgnCTexQEA @@ -6416,62 +6474,70 @@ pkwzv14p5QLGWkwn5HwBFM6rGZaYLoC+eOGarWXjUliDKv9c05uKw7+AMYULmMNXHcuMwmt600OZaVHK "/eonza-assets/themes/default/templates/dyncomp.tpl": { name: "dyncomp.tpl", local: "../eonza-assets/themes/default/templates/dyncomp.tpl", - size: 14229, - modtime: 1614832654, - compressed: ` -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 -4KB+lTcAAA== + size: 16415, + modtime: 1616388909, + compressed: ` +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 `, }, @@ -6575,7 +6641,7 @@ YE6ZVUim5pJSiPXrcv8XAAD//4uSBL2/YwAA name: "help.tpl", local: "../eonza-assets/themes/default/templates/help.tpl", size: 2369, - modtime: 1614246660, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/5xVUW/jNgx+96/gdPMlBeqkSQ87wLG9De0BPWDYw7bbS2AMiq3EWmVJk+g0WZH/PkhO nLjO3cP8kpD8SH6kKDGxheEaAfeapQTZDqe7CFmtBUVGgJcpqZjQJAsAkm1UKImUS2bA4l6wlNR0F73w @@ -6651,120 +6717,122 @@ R9VBnCPRfL6JnY9CYbgIw7n9rrOwQHFxvlX+PwAA//9gxnsIdCIAAA== "/eonza-assets/themes/default/templates/index.tpl": { name: "index.tpl", local: "../eonza-assets/themes/default/templates/index.tpl", - size: 27200, - modtime: 1614172084, - compressed: ` -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 + size: 27595, + modtime: 1615975042, + compressed: ` +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 +UDDLawAA `, }, @@ -6801,194 +6869,257 @@ TNx05YjdXTtLFep45G82RjfrD7Ze600HeNT/wIvcfwDv7wAAAP//+8FPUhwMAAA= "/eonza-assets/themes/default/templates/login.tpl": { name: "login.tpl", local: "../eonza-assets/themes/default/templates/login.tpl", - size: 3719, - modtime: 1613708591, - compressed: ` -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 + size: 4521, + modtime: 1615637266, + compressed: ` +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 +/yEz+18AAAD//yJn/kmpEQAA `, }, "/eonza-assets/themes/default/templates/notifications.tpl": { name: "notifications.tpl", local: "../eonza-assets/themes/default/templates/notifications.tpl", - size: 1706, - modtime: 1614169558, - compressed: ` -H4sIAAAAAAAC/2xUTY+jRhC98ytKbFZgxWBPZqWRMJAc9pBDNJdMThaHHihMa5tu1F2wdkb896ibxmtn -fbGa+nj16lWVc1NrPhDQZcAiJDzT7pwQ9oNghCHwpgilIt7ymhFX0oRlAJBPSa0kMS5Rg6GLwCLskJ86 -yp72+8+HgTUNl6eE1JDBl/1wPrg0gLzh0/8Saibq2GZBAvvhvDmoCXUr1PfkkgEbSd2jPWnsPZgDnBIm -UBNMSat0EcacsN/yDXAJghsK4V3pBnURCmwphFoJpbFJFusVBiBzniLkkMMoNbIGfofoXYwIDdPfUCZP -EWTeIixzlMmXKAQUODlpivC3K7HbPh1wBp+en58PIUxJR70oQssztXKHZb5r+PQo07oTJvhJZqBtyZvG -ITcDk2tkqyQlhv+LmemZEKgPa9WXl5fD4rWRGXBigtdh+fHhGCzTn2fw36NB/eOLeI/znO9sqdJq/U4S -eK0kuDLwRy14/a0INfZqQqd92jHTbWyfplPf1z5VgyIs8ym5SfaCW0HDsmUJaWa6hAnKd0tcaR/vJK/S -3Om085P3i7X6rP26m2WQ75YOyyDI11etpCGQ7QUK+AjAjzuD4zF9bS/pP+6zqrYBuBXK4AjHo2byhOAC -/uKGqsqV/bAjyiA6HtM3PFNVRVuwonkT73Ex2f5dgTf1FUVVbWEhs8T97d5VFc225vGIsqkqqII58Fxf -by/Qs15vNIPo092FRhakYcQyuLN/ZcSsq0fqVGMyhwKwzq7ZeAMAO3Nl/Ds9IcXRjg18t0TK9rKL4Ffg -zWYNoQ5lrNEMShqEorwCAfAWrp7UkkpRa6U3NyEA1HGT/qKVIuvtzelhyuEmQyONWl4Ns3/NV0o1o7qL -XaIl9HOFBdODOt3dT636YSRsVnWWBWhHWVsN4w18+NpgSGlMDTHC1O7SD4xejZKwidcml8ha9T2nOBqH -hhG+cRIYbSH6fDejz5Fn9CjnTxSDSxm1eJx106ZQrHltL/GiiEGyy6hGiuPN7YRchv+/K+56Wow+7BGd -5U6iLew3XkR42u/dxxzMhyBYVft5Da/SeC1XNusl7rcLYjDfHPB/AQAA///jXPSxqgYAAA== + size: 1720, + modtime: 1615950089, + compressed: ` +H4sIAAAAAAAC/2xUTY+jOBC98ytKzLYg2kDS2yO1RICdwxz2sOrL9p4iDm4ogjXGRnbBJNviv69sTCaZ +6Utk6uPVq1dVyU2t+UBAlwGLkPBMu3NC2A+CEYbAmyKUinjLa0ZcSROWAUA+JbWSxLhEDYYuAouwQ37q +KHvc7x8OA2saLk8JqSGDz/vhfHBpAHnDp58Saibq2GZBAvvhvDmoCXUr1PfkkgEbSd2jPWrsPZgDnBIm +UBNMSat0EcacsN/yDXAJghsK4U3pBnURCmwphFoJpbFJFusVBiBzniLkkMMoNbIG/oToTYwIDdPfUCaP +EWTeIixzlMnnKAQUODlpivCPK7HbPh1wBp+enp4OIUxJR70oQssztXKHZb5r+PRRpnUnTPCTzEDbkjeN +Q24GJtfIVklKDP8PM9MzIVAf1qrPz8+HxWsjM+DEBK/D8v3dMVimP8/gv0eDep6/+C+tBP7wEe9xnvOd +LVxa5d9IAq+VBFcUvtSC19+KUGOvJnSTSDtmuo3t2nTq+9q1alCEZT4lN8lefitvWLYsIc1MlzBB+W6J +K+3jjeRVqDvVdn4P/JqtPmu/bmoZ5Lul3zII8vVVK2kIZHuBAt4D8MPP4HhMX9pL+q/7rKptAG6hMjjC +8aiZPCG4gL+5oapyZd/twDKIjsf0Fc9UVdEWrGjexHtcTLZ/V+BVfUVRVVtYyCxx/7h3VUWzrXk8omyq +CqpgDjzXl9t79KzXi80g+nR3r5EFaRixDO7sXxkx6+qROtWYzKEArLNrNt4AwM5cGf9OT0hxtGMD3y2R +sr3sIvgdeLNZQ6hDGWs0g5IGoSivQAC8hasntaRS1FrpzU0IAHXcpL9ppch6e3P6MOVwk6GRRi2vhtm/ +5iulmlHdxS7REvq1woLpQZ3u7qdW/TASNqs6ywK0o6ythvEG3n1tMKQ0poYYYWp36QdGr0ZJ2MRrk0tk +rfqeUxyNQ8MIXzkJjLYQPdzN6CHyjD7K+QvF4FJGLT7OumlTKNa8tJd4UcQg2WVUI8Xx5nZCLsP/+xV3 +PS1GH/YRneVOoi3sN15EeNzv3ccczIcgWFX7dQ2v0ngtVzbrJe63C2Iw3xzw/wEAAP//JM5oyrgGAAA= `, }, "/eonza-assets/themes/default/templates/pro.tpl": { name: "pro.tpl", local: "../eonza-assets/themes/default/templates/pro.tpl", - size: 15620, - modtime: 1614331845, - compressed: ` -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 -8j32/wIAAP//Emu94gQ9AAA= + size: 17812, + modtime: 1615697782, + compressed: ` +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 +OZRFAAA= +`, + }, + + "/eonza-assets/themes/default/templates/scheduler.tpl": { + name: "scheduler.tpl", + local: "../eonza-assets/themes/default/templates/scheduler.tpl", + size: 11526, + modtime: 1616050412, + compressed: ` +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 `, }, "/eonza-assets/themes/default/templates/script.tpl": { name: "script.tpl", local: "../eonza-assets/themes/default/templates/script.tpl", - size: 14437, - modtime: 1614256319, - compressed: ` -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 -s7H5Z2azsf7nhP8bAAD//0pePGllOAAA + size: 14435, + modtime: 1616234836, + compressed: ` +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 +ymxs/pHZbKz/MeF/BwAA//92sTzLYzgAAA== `, }, @@ -6996,7 +7127,7 @@ s7H5Z2azsf7nhP8bAAD//0pePGllOAAA name: "settings.tpl", local: "../eonza-assets/themes/default/templates/settings.tpl", size: 10288, - modtime: 1614246241, + modtime: 1615266510, compressed: ` H4sIAAAAAAAC/9xZW48qufF/51PU9P/P0kg0zMwerZSeaRJp85CVVomUbCJFCOWY7gKcMXavbRjILN89 st1X2g1zbi+ZF8B23at+rvI8q1TSXIM+5ZgEGo96dow07nJGNAZAsyRQqDXlGxXMBwDPhygVXBPKUYLS @@ -7066,29 +7197,28 @@ PCpysF7V6go73ywrBclmt9vHPT+pS77DmcN0o+R8ujHKrwAAAP//68wRS+YEAAA= "/eonza-assets/themes/default/templates/tasks.tpl": { name: "tasks.tpl", local: "../eonza-assets/themes/default/templates/tasks.tpl", - size: 3396, - modtime: 1614255688, - compressed: ` -H4sIAAAAAAAC/8xWz4/bthK++6+Yp8SRjLWsTfDeO3htpUWLoocegiaXwlg0XHK8IkKRAjn22jD0vxek -fqxku0GS5lAtsKao75v5ZsgZcuW4lRUBHStcR4QHyg4pYVkpRhiBFOuImPvkonwCsNqn3GhiUqMFR0eF -66hA+VjQ8vXt7fSuYkJI/ZiSqZbw39vqcBdoACsh92cEzhRPPAtSuK0OszuzR7tV5ik9LoHtyHRcgBWx -B4XAFXPOy3lQGAFHpVzFuNSP6+i2x3q0zVdUwD7dGruOJGEJUkOBTLgoP538RF2vMiryVUZ2ROxIPmRP -UtLRwLTHiPx08p8XmpUY7IghYLORW1i8s+ZHTnKP9/cDxs6hreusfbNGdfzNBrW4vx/76eMVHDWhjXKf -/kJWPawFlIf0DZTH9DVsjab0KeQ3fTBKQHVI/xf1+CU3ykfniNHO/eRfNkFKM3E/QPqNkLbwAQTWa3D0 -i9TSFSjgLcQv/v/a/8WwhPjFdruNOyP56dRwfpOORm580E0k+Xn2BslyxCxd5neA2AYZ1yErVzHdJ8im -b0arGFD7VHKjoQ2ysrJk9hiBK5lS8ANXkn9aR3uJT0nwJsUsyrcsxSN6+Z6brzLv5sLyhW/Yp64wT+NU -rsDR+52rUAsU3yivYjuHY31h6vsoDIv9TyVadLvyXKNix3+RREJbSs3oTCXJEt33kZmPyubVKwgfyQhU -35zW0uy/UvC4UIbNb5WFrto260zIfWj32aDf55NV1pwV+WSy6kbcaEfwwZ8QsIbTBKA7O3w/CCdHPJ8A -CEZsGaJ2PzNifqpEKoxwy8ACcEfHS5HwUsxBilk76x+FFJiwBiqkW7y0xtDiEcm7TaSY9Ui5heQ/Hjqk -A1ikndX9RN2P2EEa1795k8nHjFUyc0f3lpdi/fLES1G/8ialf5Oi/vjsbkEF6sSiq4x2COt85LWR031d -+Aws0FpjZ2cw/wwCQ2tL93iVeHfBOwttHF49kMoZ8SIJZrzQS3+Nh9ZFPQ8/TXsZrkbgtUv1/ujaygsr -NiS2Rf8Z5u8BcUF8LsULbqOWG72VtvwDXQLx1JGpmq04jeeQzPrQnh196CwGXyNnobkP/XzpTru6z0ZL -UQ+Q502/7wPnm7wylrxrjw/jG9hsFu+MpfeF3NLggvAktTBPC1OhTtqxMpyRNHpRWUOGGwU3EGdZDDdw -jiiMI3978YilB3hnc4j/fFBMf4r7bVYDKocDkUO3ceZ1ZvFN24Ku8cdbIjSsYbqH5ReKLw7F1yCD8ueU -f67WvqjOvr7C/rZtODIWF9yUpaQk3lWCEX5oWh2Mjfr743M6+li+oRjDP27Kakcoup7pzS9hu9Pcr2sy -g1MrupXoNx0uQtcdWCnNThOKpMvP1XAkKYznEE89u2SaPaKddkt7jfErqioQdlZd4wyCVIaJkK/EZ6Se -1HeTSRfE8xnR62tD6hYzXOSXsIF46jexL/yLS7fvDMwSiofjNJ631+vQL3wVToPOgGiGzU3Sj0edNJ6y -oMkTJu2XpgbrST04Dv8KAAD//4qrSXxEDQAA + size: 3347, + modtime: 1615950288, + compressed: ` +H4sIAAAAAAAC/8xWTY/bNhO++1fMq8SRjF1Zm+BtD15bCdCi6KGHosmlWAQNlxyviFCkQI68Ngz994LU +x0q2GyTbHOoAWX48z8wzQ85Qa8etrAjoUOEmItxTtk8Jy0oxwgik2ETE3GcX5TOA9S7lRhOTGi04Oijc +RAXKh4JWr29u5rcVE0Lqh5RMtYL/31T720ADWAu5OyFwpnjiWZDCTbVf3Jod2q0yj+lhBawm03MB1sTu +FQJXzDkv515hBByVchXjUj9sopsB69E2X1MBu3Rr7CaShCVIDQUy4aL8ePQLTbPOqMjXGdkJsSf5kD1J +SUcj0x4j8uPRby81KzHYESPAaL92aJvmXTezRp2jPXwIS3DUhDbKfZYLWQ2wDlDu0zdQHtLXsDWa0seQ +xvTeKAHVPv0hGvArbpQPwhGj2v3kJ3dBQ7vwcYT055128BEENhtw9IvU0hUo4C3EL3587f/FsIL4xXa7 +jXsj+fHYcn6TjiZufLRtJPmFsPssOWKWLiamR2yDjMuQtauYHhJk0zeTwwqoXSq50dAFWVlZMnuIwJVM +KXjHleSfN9FO4mMSvEmxiPItS/GAXr7n5uvMuzmzfOYbdqkrzOM0lWtw9L52FWqB4pnyKlY7nOoLS99H +YTjsfyvRoqvLU42KHf5DEgltKTWjE5UkS3TfR2Y+KZtXryBskhGonp3W0uy+UfC0UMY9bp2F5tn15EzI +Xejq2ait57N11j4J+Wy27kfcaEfwwT8EsIHjDKB/Inw/CA9EfD0DEIzYKkTtfmbE/FKJVBjhVoEF4A6O +lyLhpbgGKRbdqv8ppMCEDVAh3fKlNYaWD0jebSLFYkDKLST/89AxHcAi1VYPC80wYntp3DDzJpNPGatk +5g7uLS/F5uWRl6J55U1KP5Oi+fTkbkkF6sSiq4x2CJt84rWV0+8ufQaWaK2xixOY/40CQ2tL93CReHvG +OwltGl4zksoZ8SIJZrzQc3+th85Fcx3+tO1lfBqB1x3V+4PrKi+c2JjYFf0XmH8ExBnxqRTPuK1abvRW +2vJPdAnEc0emaq/iPL6GZDGE9uToQ28x+Jo4C8197Odrb9rFezY5imaEPG36Qx84veSVseRde3wYX8Hd +3fJ3Y+l9Ibf08eOAfpRamMelqVAn3VgZzkgavaysIcONgiuIsyyGKzhFFMaR/0jxiJUHeGfXEP91r5j+ +HA/XrAFUDkcix27jzOvM4quuBV3iT69EaFjjdI/LLxRfHIqvRQblTyn/Uq19VZ19e4X9Y9twZCwuuSlL +SUlcV4IRfmhbHUyN+s/Ep3QMsTyjGMN/3JRVTSj6nunNr2Bba+7PNVnAsRPdSfSXDpeh646slKbWhCLp +83MxHEkK42uI555dMs0e0M77o73E+BVVFQi1VZc4oyCVYSLkK/EZaWbN7WzWB/H0Rgz6upD6wwzf6yu4 +8+Xfl77vBMwSivtDP6PazYOesNMO2y9GP550zHjOgm9PmHU7ba01s2b07P0dAAD//+NhAGETDQAA `, }, @@ -11807,6 +11937,7 @@ var _escDirs = map[string][]os.FileInfo{ _escData["/eonza-assets/scripts/if.eonza.yaml"], _escData["/eonza-assets/scripts/join-text.yaml"], _escData["/eonza-assets/scripts/log-output.yaml"], + _escData["/eonza-assets/scripts/markdown-to-html.yaml"], _escData["/eonza-assets/scripts/message.yaml"], _escData["/eonza-assets/scripts/move-file.yaml"], _escData["/eonza-assets/scripts/move-files.yaml"], @@ -11817,6 +11948,7 @@ var _escDirs = map[string][]os.FileInfo{ _escData["/eonza-assets/scripts/parse-yaml.yaml"], _escData["/eonza-assets/scripts/read-console.yaml"], _escData["/eonza-assets/scripts/read-file.yml"], + _escData["/eonza-assets/scripts/readme.yaml"], _escData["/eonza-assets/scripts/regex-find.yaml"], _escData["/eonza-assets/scripts/regex-replace.yaml"], _escData["/eonza-assets/scripts/rename-file.yaml"], @@ -11893,6 +12025,7 @@ var _escDirs = map[string][]os.FileInfo{ _escData["/eonza-assets/themes/default/templates/login.tpl"], _escData["/eonza-assets/themes/default/templates/notifications.tpl"], _escData["/eonza-assets/themes/default/templates/pro.tpl"], + _escData["/eonza-assets/themes/default/templates/scheduler.tpl"], _escData["/eonza-assets/themes/default/templates/script.tpl"], _escData["/eonza-assets/themes/default/templates/settings.tpl"], _escData["/eonza-assets/themes/default/templates/shutdown.tpl"], diff --git a/auth.go b/auth.go index 9f222f0..0b74107 100644 --- a/auth.go +++ b/auth.go @@ -8,6 +8,7 @@ import ( "net" "net/http" "strings" + "sync" "time" "eonza/lib" @@ -30,6 +31,7 @@ type Claims struct { Counter uint32 UserID uint32 RoleID uint32 + Twofa bool jwt.StandardClaims } @@ -40,6 +42,8 @@ type session struct { type ResponseLogin struct { Success bool `json:"success"` + Twofa bool `json:"twofa"` + TwofaQR string `json:"twofaqr"` ID string `json:"id,omitempty"` Error string `json:"error,omitempty"` } @@ -47,8 +51,24 @@ type ResponseLogin struct { var ( sessionKey string sessions = make(map[string]session) + failTime = time.Now() + loginList = make(map[string]bool) + loginMutex = sync.Mutex{} ) +func AccessDenied(code int) *echo.HTTPError { + var msg string + switch code { + case http.StatusUnauthorized: + msg = "Unauthorized" + default: + // case http.StatusForbidden: + code = http.StatusForbidden + msg = "Access denied" + } + return echo.NewHTTPError(code, msg) +} + func getCookie(c echo.Context, name string) string { cookie, err := c.Cookie(name) if err != nil { @@ -82,7 +102,7 @@ func AuthHandle(next echo.HandlerFunc) echo.HandlerFunc { } } if !matched { - return echo.NewHTTPError(http.StatusForbidden, "Access denied") + return AccessDenied(http.StatusForbidden) } } url := c.Request().URL.String() @@ -112,11 +132,12 @@ func AuthHandle(next echo.HandlerFunc) echo.HandlerFunc { isAccess = lib.IsLocalhost(host, ip) } if !isAccess { - return echo.NewHTTPError(http.StatusForbidden, "Access denied") + return AccessDenied(http.StatusForbidden) + } + if url != `/api/login` { + mutex.Lock() + defer mutex.Unlock() } - mutex.Lock() - defer mutex.Unlock() - var ( userID uint32 user users.User @@ -141,7 +162,7 @@ func AuthHandle(next echo.HandlerFunc) echo.HandlerFunc { } } if !valid && !strings.HasPrefix(url, `/sys`) { - return echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized") + return AccessDenied(http.StatusUnauthorized) } } lang = scriptTask.Header.Lang @@ -189,7 +210,7 @@ func AuthHandle(next echo.HandlerFunc) echo.HandlerFunc { c.Request().URL.Path = `login` } else if url != `/api/login` && url != `/api/taskstatus` && url != `/api/sys` && url != `/api/notification` { - return echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized") + return AccessDenied(http.StatusUnauthorized) } } } @@ -197,7 +218,7 @@ func AuthHandle(next echo.HandlerFunc) echo.HandlerFunc { c.Request().URL.Path = `install` } if user, ok = GetUser(userID); !ok { - return echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized") + return AccessDenied(http.StatusUnauthorized) } if u, ok := userSettings[user.ID]; ok { lang = u.Lang @@ -226,15 +247,39 @@ func loginHandle(c echo.Context) error { response ResponseLogin err error ) - + ip := c.RealIP() + loginMutex.Lock() + if _, ok := loginList[ip]; ok { + loginMutex.Unlock() + response.Error = `Too many requests` + return c.JSON(http.StatusOK, response) + } + loginList[ip] = true + loginMutex.Unlock() for _, user := range GetUsers() { err = bcrypt.CompareHashAndPassword(user.PasswordHash, []byte(c.FormValue("password"))) if err == nil { + if IsTwofa() { + otp := c.FormValue("otp") + if len(otp) > 0 { + err = ValidateOTP(user, otp) + } + if len(otp) == 0 || err != nil { + var errqr error + response.Twofa = true + response.TwofaQR, errqr = TwofaQR(user.ID) + if err == nil { + err = errqr + } + break + } + } expirationTime := time.Now().Add(30 * 24 * time.Hour) claims := &Claims{ Counter: user.PassCounter, UserID: user.ID, RoleID: user.RoleID, + Twofa: IsTwofa(), StandardClaims: jwt.StandardClaims{ ExpiresAt: expirationTime.Unix(), }, @@ -255,7 +300,15 @@ func loginHandle(c echo.Context) error { } if err != nil { response.Error = err.Error() + if pause := time.Since(failTime).Milliseconds(); pause < 3000 { + time.Sleep(time.Duration(3000-pause) * time.Millisecond) + } + failTime = time.Now() } + loginMutex.Lock() + delete(loginList, ip) + loginMutex.Unlock() + response.Success = err == nil return c.JSON(http.StatusOK, response) } diff --git a/const.go b/const.go index 1451f46..6a886e2 100644 --- a/const.go +++ b/const.go @@ -6,7 +6,7 @@ package main const ( // Version of the application - Version = "1.14.0" + Version = "1.15.0" // DefPort is the default web-server port DefPort = 3234 // DefTheme is the default web-server theme diff --git a/cron.go b/cron.go index a2cffdf..8c9fa48 100644 --- a/cron.go +++ b/cron.go @@ -16,9 +16,34 @@ var ( cronJobs = cron.New() //cron.New(cron.WithSeconds()) ) +func NewTimer(timer *Timer, schedule cron.Schedule) { + if timer.Active { + timer.entry = cronJobs.Schedule(schedule, timer) + } +} + +func RemoveTimer(timer *Timer) { + if !timer.Active { + return + } + cronJobs.Remove(timer.entry) +} + func RunCron() { if _, err := cronJobs.AddFunc(fmt.Sprintf(`%d * * * *`, rand.Intn(60)), AutoCheckUpdate); err != nil { golog.Error(err) } + for tkey, timer := range storage.Timers { + if !timer.Active { + continue + } + schedule, err := cron.ParseStandard(timer.Cron) + if err != nil { + timer.Active = false + } else { + timer.entry = cronJobs.Schedule(schedule, storage.Timers[tkey]) + } + storage.Timers[tkey] = timer + } cronJobs.Start() } diff --git a/go.mod b/go.mod index 1c241e5..b5ae716 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/labstack/echo/v4 v4.1.17 github.com/lib/pq v1.9.0 github.com/mattn/go-colorable v0.1.8 // indirect + github.com/pquerna/otp v1.3.0 // indirect github.com/robfig/cron/v3 v3.0.1 github.com/sergi/go-diff v1.1.0 // indirect github.com/xhit/go-simple-mail/v2 v2.7.0 diff --git a/go.sum b/go.sum index d14a180..c7298ad 100644 --- a/go.sum +++ b/go.sum @@ -20,6 +20,8 @@ github.com/alecthomas/repr v0.0.0-20201120212035-bb82daffcca2 h1:G5TeG64Ox4OWq2Y github.com/alecthomas/repr v0.0.0-20201120212035-bb82daffcca2/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/atotto/clipboard v0.1.2 h1:YZCtFu5Ie8qX2VmVTBnrqLSiU9XOWwqNRmdT3gIQzbY= github.com/atotto/clipboard v0.1.2/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ= @@ -90,6 +92,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/otp v1.3.0 h1:oJV/SkzR33anKXwQU3Of42rL4wbrffP4uvUf1SvS5Xs= +github.com/pquerna/otp v1.3.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= diff --git a/make.g b/make.g index 72bb170..9380520 100755 --- a/make.g +++ b/make.g @@ -10,7 +10,7 @@ run { $ /home/ak/go/bin/esc -ignore "\.git|LICENSE|README.md" -o assets.go ../eonza-assets // $ go install -ldflags "-s -w" -tags "eonza standard" - $ go install -tags "tray pro" -ldflags "-s -w -X main.VerType=%{vertype} -X main.CompileDate=%{Format(`YYYY-MM-DD`,Now())}" + $ go install -tags "tray" -ldflags "-s -w -X main.VerType=%{vertype} -X main.CompileDate=%{Format(`YYYY-MM-DD`,Now())}" // $ go install -ldflags "-s -w -X main.VerType=%{vertype} -X main.CompileDate=%{Format(`YYYY-MM-DD`,Now())}" $ cp ${GOPATH}/bin/eonza /home/ak/app/eonza-dev/eonza $ cp ${GOPATH}/bin/eonza /home/ak/app/eonza/eonza diff --git a/notifications.go b/notifications.go index e92ac1c..c364fb3 100644 --- a/notifications.go +++ b/notifications.go @@ -202,17 +202,8 @@ func NfyList(clear bool, userid, roleid uint32) *NfyResponse { (nfyFlag&0x200 == 0x200 && roleid == item.RoleID) var userName, roleName string - if item.RoleID != users.XAdminID { - if role, ok := GetRole(item.RoleID); ok { - roleName = role.Name - } - } else if item.UserID != users.XRootID { - roleName = users.RootRole - } if item.UserID != users.XRootID { - if user, ok := GetUser(item.UserID); ok { - userName = user.Nickname - } + userName, roleName = GetUserRole(item.UserID, item.RoleID) } ret = append(ret, Nfy{ diff --git a/notpro.go b/notpro.go index 8e1394e..5e75c48 100644 --- a/notpro.go +++ b/notpro.go @@ -40,6 +40,26 @@ func GetUser(id uint32) (user users.User, ok bool) { return } +func GetUserRole(id, idrole uint32) (uname string, rname string) { + if idrole >= users.ResRoleID { + uname, rname = GetSchedulerName(id, idrole) + } else { + if user, ok := Users[id]; ok { + uname = user.Nickname + if role, ok := Roles[user.RoleID]; ok { + rname = role.Name + } + } + } + if len(uname) == 0 { + uname = fmt.Sprintf("%x", id) + } + if len(rname) == 0 { + rname = fmt.Sprintf("%x", idrole) + } + return +} + func GetUsers() []users.User { user := Users[users.XRootID] return []users.User{ @@ -84,5 +104,17 @@ func proSettingsHandle(c echo.Context) error { return jsonError(c, fmt.Errorf(`Unsupported`)) } +func IsTwofa() bool { + return false +} + +func TwofaQR(id uint32) (string, error) { + return ``, fmt.Errorf(`Unsupported`) +} + +func ValidateOTP(user users.User, otp string) error { + return fmt.Errorf(`Unsupported`) +} + func ProApi(e *echo.Echo) { } diff --git a/pro.go b/pro.go index fd4e4ac..e8f6a5a 100644 --- a/pro.go +++ b/pro.go @@ -8,6 +8,7 @@ package main import ( "eonza/users" + "fmt" "net/http" pro "github.com/gentee/eonza-pro" @@ -15,9 +16,9 @@ import ( ) type ProOptions struct { - Active bool `json:"active"` - Settings pro.Settings `json:"settings"` - Trial Trial `json:"trial"` + Active bool `json:"active"` + Settings users.ProSettings `json:"settings"` + Trial Trial `json:"trial"` } const ( @@ -37,6 +38,9 @@ func CheckAdmin(c echo.Context) error { } func ScriptAccess(name, ipath string, roleid uint32) error { + if roleid >= users.ResRoleID { + return nil + } return pro.ScriptAccess(name, ipath, roleid) } @@ -48,6 +52,21 @@ func GetUser(id uint32) (user users.User, ok bool) { return pro.GetUser(id) } +func GetUserRole(id, idrole uint32) (uname string, rname string) { + if idrole >= users.ResRoleID { + uname, rname = GetSchedulerName(id, idrole) + } else { + uname, rname = pro.GetUserRole(id) + } + if len(uname) == 0 { + uname = fmt.Sprintf("%x", id) + } + if len(rname) == 0 { + rname = fmt.Sprintf("%x", idrole) + } + return +} + func GetUsers() []users.User { return pro.GetUsers() } @@ -60,7 +79,31 @@ func IncPassCounter(id uint32) error { return pro.IncPassCounter(id) } +func IsTwofa() bool { + return pro.IsTwofa() +} + +func TwofaQR(id uint32) (string, error) { + return pro.TwofaQR(id) +} + +func ValidateOTP(user users.User, otp string) error { + return pro.ValidateOTP(user, otp) +} + +func GetTitle() string { + ret := storage.Settings.Title + if len(ret) == 0 { + ret = appInfo.Title + } else { + ret += `/eonza` + } + return ret +} + func ProInit(psw []byte, counter uint32) { + pro.CallbackPassCounter = StoragePassCounter + pro.CallbackTitle = GetTitle pro.LoadPro(storage.Trial.Mode > TrialOff, psw, counter, cfg.path) } @@ -72,6 +115,7 @@ func proSettingsHandle(c echo.Context) error { } response.Active = pro.Active response.Trial = storage.Trial + response.Settings = pro.Settings() return c.JSON(http.StatusOK, &response) } diff --git a/render.go b/render.go index c209372..d3e6b9a 100644 --- a/render.go +++ b/render.go @@ -40,6 +40,7 @@ type Render struct { ProActive bool DefLists []DefList User *users.User + Twofa bool // ProSettings ProSettings // Port int /* Params map[string]string @@ -118,7 +119,6 @@ func RenderPage(c echo.Context, url string) (string, error) { return template.HTML(out) } if url == `script` { - var userid, roleid uint32 if IsScript { renderScript.Task = task renderScript.Title = scriptTask.Header.Title @@ -132,17 +132,7 @@ func RenderPage(c echo.Context, url string) (string, error) { renderScript.Stdout = out2html(files[TExtOut], false) renderScript.Logout = out2html(files[TExtLog], true) renderScript.Task.SourceCode = files[TExtSrc] - userid, roleid = renderScript.Task.UserID, renderScript.Task.RoleID - if user, ok := GetUser(userid); ok { - renderScript.Nickname = user.Nickname - } else { - renderScript.Nickname = fmt.Sprint(userid) - } - if role, ok := GetRole(roleid); ok { - renderScript.Role = role.Name - } else { - renderScript.Role = fmt.Sprint(roleid) - } + renderScript.Nickname, renderScript.Role = GetUserRole(renderScript.Task.UserID, renderScript.Task.RoleID) } if len(renderScript.Task.SourceCode) > 0 { if out, err := lib.Markdown("```go\r\n" + renderScript.Task.SourceCode + @@ -206,6 +196,7 @@ func RenderPage(c echo.Context, url string) (string, error) { render.ProActive = IsProActive() render.DefLists = defaultList render.User = c.(*Auth).User + render.Twofa = IsTwofa() data = render } diff --git a/run.go b/run.go new file mode 100644 index 0000000..5f791f0 --- /dev/null +++ b/run.go @@ -0,0 +1,139 @@ +// Copyright 2021 Alexey Krivonogov. All rights reserved. +// Use of this source code is governed by a MIT license +// that can be found in the LICENSE file. + +package main + +import ( + "eonza/lib" + "eonza/script" + "eonza/users" + "fmt" + "strings" + "time" +) + +type RunScript struct { + Name string + Open bool + Console bool + User users.User + Role users.Role + IP string + + // Result fields + ID uint32 + Port int + Data []byte +} + +func systemRun(rs *RunScript) error { + var ( + item *Script + src string + langCode string + langid int + ) + port, err := getPort() + if err != nil { + return err + } + if rs.Role.ID >= users.ResRoleID { + utemp, _ := GetUser(users.XRootID) + langCode = GetLangCode(&utemp) + langid = GetLangId(&utemp) + } else { + langCode = GetLangCode(&rs.User) + langid = GetLangId(&rs.User) + } + if item = getScript(rs.Name); item == nil { + return fmt.Errorf(Lang(langid, `erropen`, rs.Name)) + } + if err = ScriptAccess(item.Settings.Name, item.Settings.Path, rs.Role.ID); err != nil { + return err + } + if item.Settings.Unrun { + return fmt.Errorf(Lang(langid, `errnorun`, rs.Name)) + } + title := item.Settings.Title + if langTitle := strings.Trim(title, `#`); langTitle != title { + if val, ok := item.Langs[langCode][langTitle]; ok { + title = val + } else if val, ok := item.Langs[LangDefCode][langTitle]; ok { + title = val + } + } + header := script.Header{ + Name: rs.Name, + Title: title, + AssetsDir: cfg.AssetsDir, + LogDir: cfg.Log.Dir, + CDN: cfg.CDN, + Console: rs.Console, + IsPlayground: cfg.playground, + IP: rs.IP, + User: rs.User, + Role: rs.Role, + ClaimKey: cfg.HTTP.JWTKey + sessionKey, + IsPro: storage.Trial.Mode > TrialOff, + Constants: storage.Settings.Constants, + Lang: langCode, + TaskID: lib.RndNum(), + ServerPort: cfg.HTTP.Port, + HTTP: &lib.HTTPConfig{ + Host: cfg.HTTP.Host, + Port: port, + Open: rs.Open, + Theme: cfg.HTTP.Theme, + Access: cfg.HTTP.Access, + }, + } + if header.IsPlayground { + header.Playground = &cfg.Playground + tasksLimit := cfg.Playground.Tasks + for _, item := range tasks { + if item.Status < TaskFinished { + tasksLimit-- + } + } + if tasksLimit <= 0 { + return fmt.Errorf(Lang(langid, `errtasklimit`, cfg.Playground.Tasks)) + } + } + if src, err = GenSource(item, &header); err != nil { + return err + } + if storage.Settings.IncludeSrc { + if header.SourceCode, err = lib.GzipCompress([]byte(src)); err != nil { + return err + } + } + data, err := script.Encode(header, src) + if err != nil { + return err + } + if storage.Trial.Mode == TrialOn { + now := time.Now() + if storage.Trial.Last.Day() != now.Day() { + storage.Trial.Count++ + storage.Trial.Last = now + if storage.Trial.Count > TrialDays { + storage.Trial.Mode = TrialDisabled + SetActive(false) + } + if err = SaveStorage(); err != nil { + return err + } + } + } + if err = NewTask(header); err != nil { + return err + } + if rs.Console { + rs.Data = data.Bytes() + } + rs.Port = header.HTTP.Port + rs.ID = header.TaskID + + return nil +} diff --git a/scheduler.go b/scheduler.go new file mode 100644 index 0000000..094657a --- /dev/null +++ b/scheduler.go @@ -0,0 +1,186 @@ +// Copyright 2021 Alexey Krivonogov. All rights reserved. +// Use of this source code is governed by a MIT license +// that can be found in the LICENSE file. + +package main + +import ( + "eonza/lib" + "eonza/users" + "fmt" + "net/http" + "sort" + "strconv" + "strings" + "time" + + "github.com/labstack/echo/v4" + "github.com/robfig/cron/v3" +) + +type TimerCommon struct { + ID uint32 `json:"id"` + Name string `json:"name"` + Script string `json:"script"` + Cron string `json:"cron"` + Active bool `json:"active"` +} + +type TimerInfo struct { + TimerCommon + NextRun string `json:"next"` + + next time.Time +} + +type Timer struct { + TimerCommon + + entry cron.EntryID +} + +type TimersResponse struct { + List []TimerInfo `json:"list"` + Error string `json:"error,omitempty"` +} + +func GetSchedulerName(id, idrole uint32) (uname string, rname string) { + if idrole == users.TimersID { + if timer, ok := storage.Timers[id]; ok { + uname = timer.Name + } + rname = users.TimersRole + } + return +} + +func (timer *Timer) Run() { + if cfg.playground { + NewNotification(&Notification{ + Text: `Scheduler can't run scripts in playground mode`, + UserID: timer.ID, + RoleID: users.TimersID, + Script: timer.Script, + }) + return + } + rs := RunScript{ + Name: timer.Script, + User: users.User{ + ID: timer.ID, + Nickname: timer.Name, + RoleID: users.TimersID, + }, + Role: users.Role{ + ID: users.TimersID, + Name: users.TimersRole, + }, + IP: Localhost, + } + if err := systemRun(&rs); err != nil { + NewNotification(&Notification{ + Text: fmt.Sprintf(`Scheduler error: %s`, err.Error()), + UserID: timer.ID, + RoleID: users.TimersID, + Script: rs.Name, + }) + } +} + +func timersResponse(c echo.Context) error { + listInfo := make([]TimerInfo, 0, len(storage.Timers)) + for _, item := range storage.Timers { + var timer TimerInfo + + timer.TimerCommon = item.TimerCommon + if item.Active { + timer.next = cronJobs.Entry(item.entry).Next + timer.NextRun = timer.next.Format(TimeFormat) + } + listInfo = append(listInfo, timer) + } + sort.Slice(listInfo, func(i, j int) bool { + if !listInfo[i].Active { + if listInfo[j].Active { + return false + } + return strings.ToLower(listInfo[i].Name) < strings.ToLower(listInfo[j].Name) + } + if !listInfo[j].Active { + return true + } + return listInfo[i].next.Before(listInfo[j].next) + }) + return c.JSON(http.StatusOK, &TimersResponse{ + List: listInfo, + }) +} + +func timersHandle(c echo.Context) error { + if err := CheckAdmin(c); err != nil { + return jsonError(c, err) + } + return timersResponse(c) +} + +func saveTimerHandle(c echo.Context) error { + if err := CheckAdmin(c); err != nil { + return jsonError(c, err) + } + var timer TimerInfo + if err := c.Bind(&timer); err != nil { + return jsonError(c, err) + } + if len(timer.Script) == 0 { + return jsonError(c, Lang(DefLang, `errreq`, `Script`)) + } + for _, item := range storage.Timers { + if len(timer.Name) > 0 && strings.ToLower(timer.Name) == strings.ToLower(item.Name) && + timer.ID != item.ID { + return jsonError(c, fmt.Errorf(`Timer '%s' exists`, timer.Name)) + } + } + var ( + schedule cron.Schedule + err error + ) + if schedule, err = cron.ParseStandard(timer.Cron); err != nil { + return jsonError(c, err) + } + if timer.ID == 0 { + for { + timer.ID = lib.RndNum() + if _, ok := storage.Timers[timer.ID]; !ok { + break + } + } + } else if curtimer, ok := storage.Timers[timer.ID]; !ok { + return jsonError(c, fmt.Errorf(`Access denied`)) + } else { + RemoveTimer(curtimer) + } + var itimer Timer + itimer.TimerCommon = timer.TimerCommon + NewTimer(&itimer, schedule) + storage.Timers[itimer.ID] = &itimer + if err := SaveStorage(); err != nil { + return jsonError(c, err) + } + return timersResponse(c) +} + +func removeTimerHandle(c echo.Context) error { + if err := CheckAdmin(c); err != nil { + return jsonError(c, err) + } + + id, _ := strconv.ParseUint(c.Param("id"), 10, 64) + if timer, ok := storage.Timers[uint32(id)]; ok { + RemoveTimer(timer) + delete(storage.Timers, uint32(id)) + if err := SaveStorage(); err != nil { + return jsonError(c, err) + } + } + return timersResponse(c) +} diff --git a/script/embedded.go b/script/embedded.go index 5faab83..5ddd10f 100644 --- a/script/embedded.go +++ b/script/embedded.go @@ -159,6 +159,7 @@ var ( {Prototype: `SQLRow(str,str,arr.str,str)`, Object: SQLRow}, {Prototype: `SQLValue(str,str,arr.str,str)`, Object: SQLValue}, {Prototype: `ConvertText(str,str,str) str`, Object: ConvertText}, + {Prototype: `MarkdownToHTML(str) str`, Object: lib.Markdown}, // Windows functions {Prototype: `RegistrySubkeys(int,str,int) arr.str`, Object: RegistrySubkeys}, {Prototype: `CreateRegistryKey(int,str,int) handle`, Object: CreateRegistryKey}, diff --git a/server.go b/server.go index f2f92ad..0c6f3fa 100644 --- a/server.go +++ b/server.go @@ -38,6 +38,11 @@ type Response struct { Error string `json:"error,omitempty"` } +type DataResponse struct { + Data string `json:"data"` + Error string `json:"error,omitempty"` +} + var ( ErrNotFound = errors.New(`Not found`) IsScript bool // true, if web-server for the script @@ -227,6 +232,21 @@ func installHandle(c echo.Context) error { return c.JSON(http.StatusOK, Response{Success: true}) } +func markdownHandle(c echo.Context) error { + var ( + data DataResponse + err error + ) + if err = c.Bind(&data); err != nil { + return jsonError(c, err) + } + ret, err := lib.Markdown(data.Data) + if err != nil { + return jsonError(c, err) + } + return c.JSON(http.StatusOK, DataResponse{Data: ret}) +} + func RunServer(options WebSettings) *echo.Echo { InitLang() InitTemplates() @@ -251,6 +271,7 @@ func RunServer(options WebSettings) *echo.Echo { e.GET("/images/*", fileHandle) e.GET("/webfonts/*", fileHandle) e.GET("/favicon.ico", fileHandle) + e.POST("/tools/md", markdownHandle) if IsScript { e.GET("/ws", wsTaskHandle) // + e.GET("/sys", sysHandle) // @@ -265,20 +286,22 @@ func RunServer(options WebSettings) *echo.Echo { e.GET("/api/export", exportHandle) // + e.GET("/api/reload", reloadHandle) // + e.GET("/api/logout", logoutHandle) - e.GET("/api/run", runHandle) // + - e.GET("/api/script", getScriptHandle) // + - e.GET("/api/list", listScriptHandle) // + - e.GET("/api/listrun", listRunHandle) // + - e.GET("/api/notifications", nfyHandle) // + - e.GET("/api/tasks", tasksHandle) // + - e.GET("/api/prosettings", proSettingsHandle) // + - e.GET("/api/remove/:id", removeTaskHandle) // + - e.GET("/api/removenfy/:id", removeNfyHandle) // + - e.GET("/api/sys", sysTaskHandle) // - e.GET("/api/settings", settingsHandle) // + - e.GET("/api/latest", latestVerHandle) // - e.GET("/api/trial/:id", trialHandle) // + - e.POST("/api/install", installHandle) // + + e.GET("/api/run", runHandle) // + + e.GET("/api/script", getScriptHandle) // + + e.GET("/api/list", listScriptHandle) // + + e.GET("/api/listrun", listRunHandle) // + + e.GET("/api/notifications", nfyHandle) // + + e.GET("/api/tasks", tasksHandle) // + + e.GET("/api/timers", timersHandle) // + + e.GET("/api/prosettings", proSettingsHandle) // + + e.GET("/api/remove/:id", removeTaskHandle) // + + e.GET("/api/removenfy/:id", removeNfyHandle) // + + e.GET("/api/removetimer/:id", removeTimerHandle) // + + e.GET("/api/sys", sysTaskHandle) // + e.GET("/api/settings", settingsHandle) // + + e.GET("/api/latest", latestVerHandle) // + e.GET("/api/trial/:id", trialHandle) // + + e.POST("/api/install", installHandle) // + e.POST("/api/login", loginHandle) e.POST("/api/script", saveScriptHandle) // + e.POST("/api/delete", deleteScriptHandle) // + @@ -287,6 +310,7 @@ func RunServer(options WebSettings) *echo.Echo { e.POST("/api/notification", notificationHandle) // e.POST("/api/settings", saveSettingsHandle) // + e.POST("/api/setpsw", setPasswordHandle) // + e.POST("/api/timer", saveTimerHandle) // + e.POST("/api/favs", saveFavsHandle) ProApi(e) } diff --git a/storage.go b/storage.go index 5fdcbcd..20f3224 100644 --- a/storage.go +++ b/storage.go @@ -53,6 +53,7 @@ type Storage struct { PassCounter int64 Users map[uint32]*User // Deprecated Scripts map[string]*Script + Timers map[uint32]*Timer } var ( @@ -64,6 +65,7 @@ var ( }, Users: make(map[uint32]*User), Scripts: make(map[string]*Script), + Timers: make(map[uint32]*Timer), } mutex = &sync.Mutex{} ) @@ -126,3 +128,8 @@ func LoadStorage(psw string) { } } } + +func StoragePassCounter() error { + storage.PassCounter++ + return SaveStorage() +} diff --git a/users/users.go b/users/users.go index 94f3d8a..955f0ff 100644 --- a/users/users.go +++ b/users/users.go @@ -13,12 +13,21 @@ import ( ) const ( - RootUser = `root` - RootRole = `admin` - XRootID = 1 - XAdminID = 1 + RootUser = `root` + RootRole = `admin` + TimersRole = `timers` + EventsRole = `events` + ResRoleID = 0xffffff00 + EventsID = 0xfffffffe + TimersID = 0xffffffff + XRootID = 1 + XAdminID = 1 ) +type ProSettings struct { + Twofa bool `json:"twofa"` +} + type Role struct { ID uint32 `json:"id"` Name string `json:"name"` @@ -51,6 +60,8 @@ type Auth struct { func InitUsers(psw []byte, counter uint32) (map[uint32]Role, map[uint32]User) { Roles := map[uint32]Role{ XAdminID: {ID: XAdminID, Name: RootRole}, + TimersID: {ID: TimersID, Name: TimersRole}, + EventsID: {ID: EventsID, Name: EventsRole}, } Users := map[uint32]User{ XRootID: {ID: XRootID, Nickname: RootUser, PasswordHash: psw, RoleID: XAdminID,