From 14e92fd03f2decbdbf3717db8ec480a42e341420 Mon Sep 17 00:00:00 2001 From: soonnae Date: Tue, 22 Jul 2025 17:54:42 +0900 Subject: [PATCH 1/3] [Autofic] Create package.json and CI workflow --- .github/workflows/pr_notify.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/pr_notify.yml diff --git a/.github/workflows/pr_notify.yml b/.github/workflows/pr_notify.yml new file mode 100644 index 0000000..2b34036 --- /dev/null +++ b/.github/workflows/pr_notify.yml @@ -0,0 +1,20 @@ +name: PR Notifier + +on: + pull_request: + types: [opened, reopened, closed] + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Notify Discord + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + run: | + curl -H "Content-Type: application/json" -d '{"content": "🔔 Pull Request [${{ github.event.pull_request.title }}](${{ github.event.pull_request.html_url }}) by ${{ github.event.pull_request.user.login }} - ${{ github.event.action }}"}' $DISCORD_WEBHOOK_URL + - name: Notify Slack + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + run: | + curl -H "Content-Type: application/json" -d '{"text": ":bell: Pull Request <${{ github.event.pull_request.html_url }}|${{ github.event.pull_request.title }}> by ${{ github.event.pull_request.user.login }} - ${{ github.event.action }}"}' $SLACK_WEBHOOK_URL From 0b852cb8577570b6a2e23f7cd912e0703ade5015 Mon Sep 17 00:00:00 2001 From: soonnae Date: Tue, 22 Jul 2025 17:54:45 +0900 Subject: [PATCH 2/3] [Autofic] 2 malicious code detected!! --- res/wx20160408.js | 6886 +---------------------------------- res/wx20160629.js | 8781 ++------------------------------------------- 2 files changed, 276 insertions(+), 15391 deletions(-) diff --git a/res/wx20160408.js b/res/wx20160408.js index 5c9ceef..34e9e56 100644 --- a/res/wx20160408.js +++ b/res/wx20160408.js @@ -1,6880 +1,20 @@ -! function() { - var e, t = function() {}, - o = ["assert", "clear", "count", "debug", "dir", "dirxml", "error", "exception", "group", "groupCollapsed", "groupEnd", "info", "log", "markTimeline", "profile", "profileEnd", "table", "time", "timeEnd", "timeStamp", "trace", "warn"], - n = o.length; - 0 == /mmdebug/.test(location.search) && location.href.indexOf("dev.web.weixin") < 0 && (window.console = {}); - for (var r = window.console = window.console || {}; n--;) e = o[n], r[e] || (r[e] = t) -}(), angular.module("Controllers", []), ! function() { - "use strict"; - location.href.indexOf("dev.web") < 0 ? angular.module("exceptionOverride", []).factory("$exceptionHandler", [function() { - return function(e) { - throw window._errorHandler && window._errorHandler(e), console.log(e), e - } - }]) : angular.module("exceptionOverride", []), angular.module("Controllers").controller("appController", ["$rootScope", "$scope", "$timeout", "$log", "$state", "$window", "ngDialog", "mmpop", "appFactory", "loginFactory", "contactFactory", "accountFactory", "chatFactory", "confFactory", "contextMenuFactory", "notificationFactory", "utilFactory", "reportService", "actionTrack", "surviveCheckService", "subscribeMsgService", "stateManageService", function(e, t, o, n, r, a, i, c, s, l, u, f, d, g, m, p, h, M, y, C, v, w) { - function S() { - return u.pickContacts(["friend", "chatroom"], { - chatroom: { - keyword: t.keyword, - isNewArray: !0 - }, - friend: { - keyword: t.keyword, - isNewArray: !0, - isWithoutBrand: !0, - showFriendHeader: !0 - } - }, !0).result - } - - function b() { - var e = k; - e && setTimeout(function() { - var t = (e[0].clientHeight - e.find(".ngdialog-content").height()) / 2; - e.css("paddingTop", t) - }, 20) - } - - function T() { - t.isLoaded = !0, t.isUnLogin = !1, M.report(M.ReportType.timing, { - timing: { - initStart: Date.now() - } - }), s.init().then(function(n) { - if (h.log("initData", n), n.BaseResponse && "0" != n.BaseResponse.Ret) return console.log("BaseResponse.Ret", n.BaseResponse.Ret), void(l.timeoutDetect(n.BaseResponse.Ret) || i.openConfirm({ - className: "default ", - templateUrl: "comfirmTips.html", - controller: ["$scope", function(e) { - e.title = MM.context("02d9819"), e.content = MM.context("0d2fc2c"), M.report(M.ReportType.initError, { - text: "程序初始化失败,点击确认刷新页面", - code: n.BaseResponse.Ret, - cookie: document.cookie - }), e.callback = function() { - document.location.reload(!0) - } - }] - })); - f.setUserInfo(n.User), f.setSkey(n.SKey), f.setSyncKey(n.SyncKey), u.addContact(n.User), u.addContacts(n.ContactList), d.initChatList(n.ChatSet), d.notifyMobile(f.getUserName(), g.StatusNotifyCode_INITED), v.init(n.MPSubscribeMsgList), e.$broadcast("root:pageInit:success"), h.setCheckUrl(f), h.log("getUserInfo", f.getUserInfo()), t.$broadcast("updateUser"), M.report(M.ReportType.timing, { - timing: { - initEnd: Date.now() - } - }); - var r = n.ClickReportInterval || 3e5; - setTimeout(function a() { - y.report(), setTimeout(a, r) - }, r), o(function() { - function e(o) { - u.initContact(o).then(function(o) { - u.addContacts(o.MemberList), M.report(M.ReportType.timing, { - timing: { - initContactEnd: Date.now() - }, - needSend: !0 - }), 16 >= t && o.Seq && 0 != o.Seq && (t++, e(o.Seq)) - }) - } - M.report(M.ReportType.timing, { - timing: { - initContactStart: Date.now() - } - }); - var t = 1; - e(0) - }, 0), t.account = u.getContact(f.getUserName()), E() - }) - } - - function E() { - t.debug && (F && o.cancel(F), C.start(4e4), F = o(function() { - s.syncCheck().then(function(e) { - return C.start(5e3), e - }, function(e) { - return C.start(2e3), e - }).then(N, P) - }, g.TIMEOUT_SYNC_CHECK)) - } - - function N(e) { - h.log("syncCheckHasChange", e); - try { - f.setSyncKey(e.SyncKey), f.updateUserInfo(e.Profile, function() {}), angular.forEach(e.DelContactList, function(t) { - d.deleteChatList(t.UserName), d.deleteChatMessage(t.UserName), u.deleteContact(t), d.getCurrentUserName() == t.UserName && d.setCurrentUserName(""), console.log("DelContactList", e.DelContactList) - }), angular.forEach(e.ModContactList, function(t) { - u.addContact(t), console.log("ModContactList", e.ModContactList) - }), angular.forEach(e.AddMsgList, function(e) { - d.messageProcess(e) - }) - } catch (t) { - t.other = { - reason: "throw err when syncChackHasChange" - }, window._errorHandler && window._errorHandler(t) - } finally { - E() - } - } - - function P() { - E() - } - window._appTiming = {}, r.go("chat"), e.CONF = g, t.isUnLogin = !window.MMCgi.isLogin, t.debug = !0, t.isShowReader = /qq\.com/gi.test(location.href), window.MMCgi.isLogin && (T(), h.browser.chrome && !MMDEV && (window.onbeforeunload = function(e) { - return e = e || window.event, e && (e.returnValue = "关闭浏览器聊天内容将会丢失。"), "关闭浏览器聊天内容将会丢失。" - })), t.$on("newLoginPage", function(e, t) { - console.log("newLoginPage", t), f.setSkey(t.SKey), f.setSid(t.Sid), f.setUin(t.Uin), f.setPassticket(t.Passticket), T() - }); - var A, I; - t.search = function() { - A && o.cancel(A), A = o(function() { - return t.keyword ? (I && I.close(), void(I = c.open({ - templateUrl: "searchList.html", - controller: ["$rootScope", "$scope", "$state", function(e, t, o) { - t.$watch(function() { - return u.contactChangeFlag - }, function() { - t.allContacts.length = 0, t.allContacts.push.apply(t.allContacts, S()) - }), t.clickUserCallback = function(n) { - n.UserName && (o.go("chat", { - userName: n.UserName - }), t.closeThisMmPop(), e.$broadcast("root:searchList:cleanKeyWord")) - } - }], - scope: { - keyword: t.keyword, - allContacts: S(), - heightCalc: function(e) { - return "header" === e.type ? 31 : 60 - } - }, - className: "recommendation", - autoFoucs: !1, - container: angular.element(document.querySelector("#search_bar")) - }))) : void(I && I.close()) - }, 200) - }, t.searchKeydown = function(t) { - switch (t.keyCode) { - case g.KEYCODE_ARROW_UP: - I && I.isOpen() && e.$broadcast("root:searchList:keyArrowUp"), t.preventDefault(), t.stopPropagation(); - break; - case g.KEYCODE_ARROW_DOWN: - I && I.isOpen() && e.$broadcast("root:searchList:keyArrowDown"), t.preventDefault(), t.stopPropagation(); - break; - case g.KEYCODE_ENTER: - I && I.isOpen() && e.$broadcast("root:searchList:keyEnter"), t.preventDefault(), t.stopPropagation() - } - }, t.$on("root:searchList:cleanKeyWord", function() { - t.keyword = "" - }); - var k; - t.$on("ngDialog.opened", function(e, t) { - w.change("dialog:open", !0), k = t, b() - }), t.$on("ngDialog.closed", function() { - w.change("dialog:open", !1), k = null - }), $(window).on("resize", function() { - b() - }), t.appClick = function(e) { - t.$broadcast("app:contextMenu:hide", e) - }, t.showContextMenu = function(e) { - t.$broadcast("app:contextMenu:show", e) - }, t.toggleSystemMenu = function() { - c.toggleOpen({ - templateUrl: "systemMenu.html", - top: 60, - left: 85, - container: angular.element(document.querySelector(".panel")), - controller: "systemMenuController", - singletonId: "mmpop_system_menu", - className: "system_menu" - }) - }, t.showProfile = function(e) { - if (t.account) { - var o = t.account, - n = e.pageY + 25, - a = e.pageX + 6; - c.open({ - templateUrl: "profile_mini.html", - className: "profile_mini_wrap scale-fade", - top: n, - left: a, - blurClose: !0, - singletonId: "mmpop_profile", - controller: ["$scope", function(e) { - e.contact = o, e.addUserContent = "", e.isShowSendBox = !1, e.chat = function(t) { - r.go("chat", { - userName: t - }), e.closeThisMmPop() - } - }] - }) - } - }, t.dblclickChat = function() { - t.$broadcast("app:chat:dblclick") - }, t.requestPermission = function() { - p.requestPermission(function() { - h.log("请求权限了...") - }) - }, C.callback(E); - var F - }]) - }(), ! function() { - "use strict"; - angular.module("Controllers").controller("loginController", ["$scope", "loginFactory", "utilFactory", "reportService", function(e, t, o, n) { - $(".lang .lang-item").click(function(e) { - $("script").remove(), location.href = e.target.href, e.preventDefault() - }), window.MMCgi.isLogin || t.getUUID().then(function(r) { - function a(i) { - switch (i.code) { - case 200: - t.newLoginPage(i.redirect_uri).then(function(t) { - var r = t.match(/(.*)<\/ret>/), - a = t.match(/