mirror of
https://github.com/LingChair/LingChair-V0.git
synced 2025-12-08 01:55:50 +08:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b38e156c79 | ||
|
|
2281e92909 | ||
|
|
2a9708bca3 | ||
|
|
2bde59e5cc | ||
|
|
afcec52b79 | ||
|
|
d38baca35f | ||
|
|
410fa1439d | ||
|
|
2f9c18d2b2 | ||
|
|
5bc4d1a01c | ||
|
|
d39cf69902 | ||
|
|
129ba2d27a | ||
|
|
81c314c734 |
@@ -232,7 +232,23 @@ class ContactsList {
|
||||
ChatMsgAdapter.switchTo(name, "single")
|
||||
})
|
||||
}
|
||||
})
|
||||
client.emit("user.getGroups", {
|
||||
name: localStorage.userName,
|
||||
accessToken: await CurrentUser.getAccessToken(),
|
||||
}, async (re) => {
|
||||
if (re.code !== 0)
|
||||
return mdui.snackbar(re.msg)
|
||||
|
||||
viewBinding.groupsList.empty()
|
||||
let ls = re.data.groups
|
||||
for (let index in ls) {
|
||||
let name = ls[index]
|
||||
let dick = await NickCache.getNick(name)
|
||||
$($.parseHTML(`<li class="mdui-list-item mdui-ripple" mdui-drawer-close><div class="mdui-list-item-avatar"><img src="${CurrentUser.getUserHeadUrl(name)}" onerror="this.src='res/default_head.png'" /></div><div class="mdui-list-item-content">` + dick + `</div></li>`)).appendTo(viewBinding.groupsList).click(() => {
|
||||
ChatMsgAdapter.switchTo(name, "single")
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<div class="mdui-list-item-avatar">
|
||||
<img src="default_head.png" n-id="userHead" onerror="this.src='res/default_head.png'" />
|
||||
</div>
|
||||
<div class="mdui-list-item-content"><a n-id="helloText">早安</a>, <a n-id="userNick">Unknown</a></div>
|
||||
<div class="mdui-list-item-content"><a n-id="helloText">早安</a>, <a n-id="userNick">未知用户</a></div>
|
||||
</li>
|
||||
<div class="mdui-subheader">聊天</div>
|
||||
<li class="mdui-collapse-item">
|
||||
@@ -55,6 +55,13 @@
|
||||
<div class="mdui-collapse-item-body mdui-list" n-id="contactsList">
|
||||
</div>
|
||||
</li>
|
||||
<li class="mdui-collapse-item">
|
||||
<div class="mdui-collapse-item-header mdui-list-item mdui-ripple"><i class="mdui-list-item-icon mdui-icon material-icons">group</i>
|
||||
<div class="mdui-list-item-content">群聊</div><i class="mdui-collapse-item-arrow mdui-icon material-icons">keyboard_arrow_down</i>
|
||||
</div>
|
||||
<div class="mdui-collapse-item-body mdui-list" n-id="groupsList">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -4,14 +4,17 @@
|
||||
|
||||
欢迎来到铃之椅! 这是一个即时通讯项目, 为通讯提供更多的选择, 为人民服务
|
||||
|
||||
> [!WARNING]
|
||||
> 该版本因存在过多复杂且难以理解的代码写法以及杂乱不堪的前端代码而停止开发, 同时也在准备开发 v1 版本, 不建议大规模将此实验版本投入使用, 否则后果自负
|
||||
|
||||
> [!NOTE]
|
||||
> 本项目只在 GitHub 存在, 严禁任何人或任何组织在没有获得我的书面、电子等同意的情况下照搬本仓库 <!-- GitCode, 说的就是你, 到时候如果被我发现你搬我仓库我迟早要找你算账 -->
|
||||
> 拒绝一切未经授权的项目搬运!铃之椅只会在 GitHub 上发布, 不可能在 Gitee、GitCode 等平台发布!
|
||||
>
|
||||
> 本项目仍在实验阶段, [点我](final.md)可查看进展
|
||||
>
|
||||
> 欢迎各位提出项目修改意见
|
||||
|
||||
### 关联项目
|
||||
### 衍生项目
|
||||
|
||||
客户端 & 服务端:
|
||||
|
||||
@@ -46,3 +49,5 @@
|
||||
WIP
|
||||
|
||||
### [你知道吗](.github/do_you_know.md)
|
||||
|
||||
<!-- 致某国内搬运GitHub的平台:别搬我,否则等死。色情小说在线看!链接:https://www.book18.org/哈!我只在GitHub(GayHub)哦,不要亲信其它平台伪造的虚假账号!为防止本人账号被莫名搬运到GxxCode(某SDN的代码平台),因此特地收汇了很多黄色词汇!希望看到此注释的人不要太惊讶,我也不想被莫名搬运啊(),好,正文:爱女人爱液按摩棒拔出来爆草包二奶暴干暴奸暴乳爆乳暴淫屄被插被操被干逼奸仓井空插暴操逼操黑操烂肏你肏死操死操我厕奴插比插b插逼插进插你插我插阴潮吹潮喷成人dv成人电影成人论坛成人小说成人电成人电影成人卡通成人聊成人片成人视成人图成人文成人小成人电影成人论坛成人色情成人网站成人文学成人小说艳情小说成人游戏吃精赤裸抽插扌由插抽一插春药大波大力抽送大乳荡妇荡女盗撮多人轮发浪放尿肥逼粉穴封面女郎风月大陆干死你干穴肛交肛门龟头裹本国产av好嫩豪乳黑逼后庭后穴虎骑花花公子换妻俱乐部黄片几吧鸡吧鸡巴鸡奸寂寞男寂寞女妓女激情集体淫奸情叫床脚交金鳞岂是池中物金麟岂是池中物精液就去日巨屌菊花洞菊门巨奶巨乳菊穴开苞口爆口活口交口射口淫裤袜狂操狂插浪逼浪妇浪叫浪女狼友聊性流淫铃木麻凌辱漏乳露b乱交乱伦轮暴轮操轮奸裸陪买春美逼美少妇美乳美腿美穴美幼秘唇迷奸密穴蜜穴蜜液摸奶摸胸母奸奈美奶子男奴内射嫩逼嫩女嫩穴捏弄女优炮友砲友喷精屁眼品香堂前凸后翘强jian强暴强奸处女情趣用品情色拳交全裸群交惹火身材人妻人兽日逼日烂肉棒肉逼肉唇肉洞肉缝肉棍肉茎肉具揉乳肉穴肉欲乳爆乳房乳沟乳交乳头三级片骚逼骚比骚女骚水骚穴色逼色界色猫色盟色情网站色区色色色诱色欲色b少年阿宾少修正射爽射颜食精释欲兽奸兽交手淫兽欲熟妇熟母熟女爽片爽死我了双臀死逼丝袜丝诱松岛枫酥痒汤加丽套弄体奸体位舔脚舔阴调教偷欢偷拍推油脱内裤文做我就色无码舞女无修正吸精夏川纯相奸小逼校鸡小穴小xue写真性感妖娆性感诱惑 https://cn.pornhub.com https://zh.xhamster.com 来看色情罢!(喜) 针对国内的采取措施 希望各GitHub访友以及工作人员能理解 因为现在某SDN搬仓库挺严重的,我们必须采取措施 -->
|
||||
|
||||
@@ -4,8 +4,11 @@
|
||||
|
||||
Welcome to LingChair! This is an IM project that it provide a new communication way. And it serves people.
|
||||
|
||||
> [!WARNING]
|
||||
> 该版本因存在过多复杂且难以理解的代码写法以及杂乱不堪的前端代码而停止开发, 同时也在准备开发 v1 版本, 不建议大规模将此实验版本投入使用, 否则后果自负
|
||||
|
||||
> [!NOTE]
|
||||
> THIS PROJECT IS ON GITHUB ONLY,EVERYONE MUSTN'T COPY ANYTHING ANd UPLOAD TO ANYWHERE WITHOUT MY PERMISSION. <!-- GitCode, 说的就是你, 到时候如果被我发现你搬我仓库我迟早要找你算账 -->
|
||||
> THIS PROJECT IS ON GITHUB ONLY,**EVERYONE MUSTN'T COPY ANYTHING AND UPLOAD TO ANYWHERE WITHOUT MY PERMISSION.** <!-- GitCode, 说的就是你, 到时候如果被我发现你搬我仓库我迟早要找你算账 -->
|
||||
>
|
||||
> My English is not so good as a normal Englishmen, so you need a translator to read Chinese texts. And sometimes this document is outdated, I'm sorry with that.
|
||||
>
|
||||
@@ -34,3 +37,5 @@ Client:
|
||||
WIP
|
||||
|
||||
### [Do you know? (Chinese)](.github/do_you_know.md)
|
||||
|
||||
<!-- 致某国内搬运GitHub的平台:别搬我,否则等死。色情小说在线看!链接:https://www.book18.org/哈!我只在GitHub(GayHub)哦,不要亲信其它平台伪造的虚假账号!为防止本人账号被莫名搬运到GxxCode(某SDN的代码平台),因此特地收汇了很多黄色词汇!希望看到此注释的人不要太惊讶,我也不想被莫名搬运啊(),好,正文:爱女人爱液按摩棒拔出来爆草包二奶暴干暴奸暴乳爆乳暴淫屄被插被操被干逼奸仓井空插暴操逼操黑操烂肏你肏死操死操我厕奴插比插b插逼插进插你插我插阴潮吹潮喷成人dv成人电影成人论坛成人小说成人电成人电影成人卡通成人聊成人片成人视成人图成人文成人小成人电影成人论坛成人色情成人网站成人文学成人小说艳情小说成人游戏吃精赤裸抽插扌由插抽一插春药大波大力抽送大乳荡妇荡女盗撮多人轮发浪放尿肥逼粉穴封面女郎风月大陆干死你干穴肛交肛门龟头裹本国产av好嫩豪乳黑逼后庭后穴虎骑花花公子换妻俱乐部黄片几吧鸡吧鸡巴鸡奸寂寞男寂寞女妓女激情集体淫奸情叫床脚交金鳞岂是池中物金麟岂是池中物精液就去日巨屌菊花洞菊门巨奶巨乳菊穴开苞口爆口活口交口射口淫裤袜狂操狂插浪逼浪妇浪叫浪女狼友聊性流淫铃木麻凌辱漏乳露b乱交乱伦轮暴轮操轮奸裸陪买春美逼美少妇美乳美腿美穴美幼秘唇迷奸密穴蜜穴蜜液摸奶摸胸母奸奈美奶子男奴内射嫩逼嫩女嫩穴捏弄女优炮友砲友喷精屁眼品香堂前凸后翘强jian强暴强奸处女情趣用品情色拳交全裸群交惹火身材人妻人兽日逼日烂肉棒肉逼肉唇肉洞肉缝肉棍肉茎肉具揉乳肉穴肉欲乳爆乳房乳沟乳交乳头三级片骚逼骚比骚女骚水骚穴色逼色界色猫色盟色情网站色区色色色诱色欲色b少年阿宾少修正射爽射颜食精释欲兽奸兽交手淫兽欲熟妇熟母熟女爽片爽死我了双臀死逼丝袜丝诱松岛枫酥痒汤加丽套弄体奸体位舔脚舔阴调教偷欢偷拍推油脱内裤文做我就色无码舞女无修正吸精夏川纯相奸小逼校鸡小穴小xue写真性感妖娆性感诱惑 https://cn.pornhub.com https://zh.xhamster.com 来看色情罢!(喜) 针对国内的采取措施 希望各GitHub访友以及工作人员能理解 因为现在某SDN搬仓库挺严重的,我们必须采取措施 -->
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
module.exports = {
|
||||
none: "\033[0m",
|
||||
red: "\033[1;31m",
|
||||
pink: "\033[1;35m",
|
||||
green: "\033[1;32m",
|
||||
yellow: "\033[1;33m",
|
||||
blue: "\033[1;34m",
|
||||
|
||||
19
server_src/log.js
Normal file
19
server_src/log.js
Normal file
@@ -0,0 +1,19 @@
|
||||
const color = require("./color")
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
|
||||
const loge = (t) => {
|
||||
log(`[E] ${color.red + t + color.none}`)
|
||||
}
|
||||
|
||||
const logw = (t) => {
|
||||
log(`[W] ${color.yellow + t + color.none}`)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
log: log,
|
||||
loge: loge,
|
||||
logw, logw,
|
||||
}
|
||||
@@ -6,9 +6,7 @@
|
||||
|
||||
console.log("正在初始化...")
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
const { log, loge, logw } = require("./log")
|
||||
|
||||
const sio = require("socket.io")
|
||||
const http = require("http")
|
||||
@@ -18,16 +16,6 @@ const process = require("process")
|
||||
const vals = require("./val")
|
||||
const color = require("./color")
|
||||
|
||||
// https://tool.lu/asciipainting/index.html?q=Geometric%20figures&type=0&page=2
|
||||
const banner = `${color.blue}
|
||||
.+------+
|
||||
.' | .'| ${color.green}为人民服务————${color.blue}
|
||||
+---+--+' | ${color.red}铃之椅 - Node.js${color.blue}
|
||||
| .+--+---+ ${color.yellow}GitHub @MoonLeeeaf${color.blue}
|
||||
|.' | .'
|
||||
+------+'${color.none}
|
||||
`
|
||||
|
||||
//定义 Http 服务器回调
|
||||
let httpServerCallback = require("./http-api")
|
||||
|
||||
@@ -59,19 +47,22 @@ let checkEmpty = (i) => {
|
||||
|
||||
wsServer.on("connect", (client) => {
|
||||
|
||||
log("客户端 " + client.handshake.address + " 已连接, 用户名(未经验证): " + client.handshake.auth.name)
|
||||
logw(`客户端 ${client.handshake.address} 已连接, 用户名(未经验证): ${client.handshake.auth.name}`)
|
||||
|
||||
for (const cb in wsServerCallback) {
|
||||
client.on(cb, (...args) => {
|
||||
log("客户端 " + client.handshake.address + " 对接口 [" + cb + "] 发起请求,参数为 " + JSON.stringify(args[0]))
|
||||
log(`客户端 ${client.handshake.address} 对接口 [${cb}] 发起请求,参数为 ${JSON.stringify(args[0])}`)
|
||||
let callback = args[args.length - 1]
|
||||
try {
|
||||
wsServerCallback[cb](args[0], (reArgs) => {
|
||||
callback(reArgs)
|
||||
log("返回接口 [" + cb + "] 到 " + client.handshake.address + ",参数为 " + JSON.stringify(reArgs))
|
||||
if (reArgs.code != 0)
|
||||
logw(`返回接口 [${cb}] 到 ${client.handshake.address},参数为 ${JSON.stringify(reArgs)}`)
|
||||
else
|
||||
log(`返回接口 [${cb}] 到 ${client.handshake.address},参数为 ${JSON.stringify(reArgs)}`)
|
||||
}, client, cachedClients)
|
||||
} catch (e) {
|
||||
log(color.yellow + "调用接口或返回数据时出错: " + e + color.none)
|
||||
loge(`调用接口或返回数据时出错: ${e}`)
|
||||
callback({ code: -1, msg: e })
|
||||
}
|
||||
})
|
||||
@@ -79,7 +70,7 @@ wsServer.on("connect", (client) => {
|
||||
|
||||
client.on("disconnect", () => {
|
||||
if (!client.handshake.auth.passCheck)
|
||||
return log("未验证的客户端 " + client.handshake.address + " 已断开, 未验证的用户名: " + client.handshake.auth.name)
|
||||
return logw(`未验证的客户端 ${client.handshake.address} 已断开, 未验证的用户名: ${client.handshake.auth.name}`)
|
||||
|
||||
// 为了支持多客户端登录 我豁出去了
|
||||
if (cachedClients[client.handshake.auth.name].length === 1)
|
||||
@@ -90,13 +81,14 @@ wsServer.on("connect", (client) => {
|
||||
arr.splice(index, 1)
|
||||
}
|
||||
})
|
||||
log("客户端 " + client.handshake.address + " 已断开, 用户名: " + client.handshake.auth.name)
|
||||
log(`客户端 ${client.handshake.address} 已断开, 用户名: ${client.handshake.auth.name}`)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
httpServer.listen(vals.LINGCHAIR_SERVER_CONFIG.port)
|
||||
|
||||
console.log(banner)
|
||||
log(color.green + "运行服务于端口 " + vals.LINGCHAIR_SERVER_CONFIG.port + " 上," + (vals.LINGCHAIR_SERVER_CONFIG.useHttps == true ? "已" : "未") + "使用 HTTPS" + color.none)
|
||||
log(color.green + "服务已启动..." + color.none)
|
||||
log(`${color.green}HTTP 和 WebSocket 服务已在端口 ${vals.LINGCHAIR_SERVER_CONFIG.port} 上启动,${vals.LINGCHAIR_SERVER_CONFIG.useHttps == true ? "已" : "未"}使用 HTTPS${color.none}`)
|
||||
log(`${color.green}感谢使用!${color.none}`)
|
||||
log(`${color.green}GitHub @MoonLeeeaf${color.none}`)
|
||||
log(`${color.green}服务已启动...${color.none}`)
|
||||
|
||||
@@ -4,9 +4,7 @@
|
||||
* 铃之椅 Node 服务端
|
||||
*/
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
const { log, loge, logw } = require("./log")
|
||||
|
||||
const msgs = require("./api-msgs")
|
||||
const users = require("./api-users")
|
||||
@@ -48,7 +46,7 @@ let api = {
|
||||
if (!users.checkRefreshToken(a.name, a.refreshToken))
|
||||
return cb({ code: -1, msg: "刷新令牌错误", invalid: true })
|
||||
|
||||
log(color.yellow + "客户端 " + client.handshake.address + " 完成了用户 " + a.name + " 的验证" + color.none)
|
||||
logw(`客户端 ${client.handshake.address} 完成了用户 ${a.name} 的验证`)
|
||||
|
||||
// 更新映射
|
||||
client.handshake.auth.passCheck = true
|
||||
|
||||
Reference in New Issue
Block a user