t.me web sync
This commit is contained in:
parent
7833a5c13a
commit
7c9b5b8d6c
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
import type { DcId } from "../types";
|
import type { DcId } from "../types";
|
||||||
|
|
||||||
|
export const MAIN_DOMAIN = 'web.telegram.org';
|
||||||
|
|
||||||
const App = {
|
const App = {
|
||||||
id: 1025907,
|
id: 1025907,
|
||||||
hash: '452b0359b988148995f22ff0f4229750',
|
hash: '452b0359b988148995f22ff0f4229750',
|
||||||
@ -18,9 +20,9 @@ const App = {
|
|||||||
langPackVersion: '0.2.9',
|
langPackVersion: '0.2.9',
|
||||||
langPack: 'macos',
|
langPack: 'macos',
|
||||||
langPackCode: 'en',
|
langPackCode: 'en',
|
||||||
domains: [] as string[],
|
domains: [MAIN_DOMAIN] as string[],
|
||||||
baseDcId: 2 as DcId,
|
baseDcId: 2 as DcId,
|
||||||
isMainDomain: location.hostname === 'web.telegram.org',
|
isMainDomain: location.hostname === MAIN_DOMAIN,
|
||||||
suffix: 'K'
|
suffix: 'K'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ export const getFullDate = (date: Date, options: Partial<{
|
|||||||
|
|
||||||
export function tsNow(seconds?: true) {
|
export function tsNow(seconds?: true) {
|
||||||
const t = Date.now();
|
const t = Date.now();
|
||||||
return seconds ? Math.floor(t / 1000) : t;
|
return seconds ? t / 1000 | 0 : t;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/DrKLO/Telegram/blob/d52b2c921abd3c1e8d6368858313ad0cb0468c07/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java
|
// https://github.com/DrKLO/Telegram/blob/d52b2c921abd3c1e8d6368858313ad0cb0468c07/TMessagesProj/src/main/java/org/telegram/ui/Adapters/FiltersView.java
|
||||||
|
@ -326,7 +326,13 @@ console.timeEnd('get storage1'); */
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
(await import('./lib/mtproto/webPushApiManager')).default.forceUnsubscribe();
|
await Promise.all([
|
||||||
|
import('./lib/mtproto/telegramMeWebManager'),
|
||||||
|
import('./lib/mtproto/webPushApiManager')
|
||||||
|
]).then(([meModule, pushModule]) => {
|
||||||
|
meModule.default.setAuthorized(false);
|
||||||
|
pushModule.default.forceUnsubscribe();
|
||||||
|
});
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ export class ApiManager {
|
|||||||
|
|
||||||
//private lol = false;
|
//private lol = false;
|
||||||
|
|
||||||
constructor() {
|
// constructor() {
|
||||||
//MtpSingleInstanceService.start();
|
//MtpSingleInstanceService.start();
|
||||||
|
|
||||||
/* AppStorage.get<number>('dc').then((dcId) => {
|
/* AppStorage.get<number>('dc').then((dcId) => {
|
||||||
@ -96,7 +96,7 @@ export class ApiManager {
|
|||||||
this.baseDcId = dcId;
|
this.baseDcId = dcId;
|
||||||
}
|
}
|
||||||
}); */
|
}); */
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* public telegramMeNotify(newValue: boolean) {
|
/* public telegramMeNotify(newValue: boolean) {
|
||||||
if(this.telegramMeNotified !== newValue) {
|
if(this.telegramMeNotified !== newValue) {
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
/*
|
|
||||||
* https://github.com/morethanwords/tweb
|
|
||||||
* Copyright (C) 2019-2021 Eduard Kuzmenko
|
|
||||||
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
|
||||||
*
|
|
||||||
* Originally from:
|
|
||||||
* https://github.com/zhukov/webogram
|
|
||||||
* Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>
|
|
||||||
* https://github.com/zhukov/webogram/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* import PasswordManager from './passwordManager';
|
|
||||||
import DcConfigurator from './dcConfigurator';
|
|
||||||
import RSAKeysManager from './rsaKeysManager';
|
|
||||||
import TimeManager from './timeManager';
|
|
||||||
import ServerTimeManager from './serverTimeManager';
|
|
||||||
import Authorizer from './authorizer';
|
|
||||||
import NetworkerFactory from './networkerFactory';
|
|
||||||
import ApiManager from './apiManager';
|
|
||||||
import ApiFileManager from './apiFileManager'; */
|
|
||||||
|
|
||||||
/* export class TelegramMeWebService {
|
|
||||||
public disabled = Modes.test ||
|
|
||||||
App.domains.indexOf(location.hostname) === -1 ||
|
|
||||||
location.protocol !== 'http:' && location.protocol !== 'https:' ||
|
|
||||||
location.protocol === 'https:' && location.hostname !== 'web.telegram.org';
|
|
||||||
|
|
||||||
public setAuthorized(canRedirect: boolean) {
|
|
||||||
if(this.disabled) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sessionStorage.get('tgme_sync').then((curValue) => {
|
|
||||||
var ts = Date.now() / 1000;
|
|
||||||
if(canRedirect &&
|
|
||||||
curValue &&
|
|
||||||
curValue.canRedirect === canRedirect &&
|
|
||||||
curValue.ts + 86400 > ts) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sessionStorage.set({tgme_sync: {canRedirect: canRedirect, ts: ts}});
|
|
||||||
|
|
||||||
var urls = [
|
|
||||||
'//telegram.me/_websync_?authed=' + (canRedirect ? '1' : '0'),
|
|
||||||
'//t.me/_websync_?authed=' + (canRedirect ? '1' : '0')
|
|
||||||
];
|
|
||||||
|
|
||||||
urls.forEach(url => {
|
|
||||||
let script = document.createElement('script');
|
|
||||||
script.onload = script.onerror = function() {
|
|
||||||
script.remove();
|
|
||||||
};
|
|
||||||
script.src = url;
|
|
||||||
document.body.appendChild(script);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const telegramMeWebService = new TelegramMeWebService(); */
|
|
||||||
|
|
||||||
/* export namespace MTProto {
|
|
||||||
//$($window).on('click keydown', rng_seed_time); // WARNING!
|
|
||||||
|
|
||||||
export const passwordManager = PasswordManager;
|
|
||||||
export const dcConfigurator = DcConfigurator;
|
|
||||||
export const rsaKeysManager = RSAKeysManager;
|
|
||||||
export const timeManager = TimeManager;
|
|
||||||
export const authorizer = Authorizer;
|
|
||||||
export const networkerFactory = NetworkerFactory;
|
|
||||||
export const apiManager = ApiManager;
|
|
||||||
export const apiFileManager = ApiFileManager;
|
|
||||||
export const serverTimeManager = ServerTimeManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
//(window as any).MTProto = MTProto; */
|
|
||||||
|
|
||||||
export default null;
|
|
@ -27,6 +27,7 @@ import webPushApiManager from './webPushApiManager';
|
|||||||
import AppStorage from '../storage';
|
import AppStorage from '../storage';
|
||||||
import appRuntimeManager from '../appManagers/appRuntimeManager';
|
import appRuntimeManager from '../appManagers/appRuntimeManager';
|
||||||
import { SocketProxyTask } from './transports/socketProxied';
|
import { SocketProxyTask } from './transports/socketProxied';
|
||||||
|
import telegramMeWebManager from './telegramMeWebManager';
|
||||||
|
|
||||||
type Task = {
|
type Task = {
|
||||||
taskId: number,
|
taskId: number,
|
||||||
@ -102,6 +103,7 @@ export class ApiManagerProxy extends CryptoWorkerMethods {
|
|||||||
Promise.all([
|
Promise.all([
|
||||||
AppStorage.toggleStorage(false),
|
AppStorage.toggleStorage(false),
|
||||||
sessionStorage.clear(),
|
sessionStorage.clear(),
|
||||||
|
telegramMeWebManager.setAuthorized(false),
|
||||||
webPushApiManager.forceUnsubscribe()
|
webPushApiManager.forceUnsubscribe()
|
||||||
]).finally(() => {
|
]).finally(() => {
|
||||||
appRuntimeManager.reload();
|
appRuntimeManager.reload();
|
||||||
|
67
src/lib/mtproto/telegramMeWebManager.ts
Normal file
67
src/lib/mtproto/telegramMeWebManager.ts
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* https://github.com/morethanwords/tweb
|
||||||
|
* Copyright (C) 2019-2021 Eduard Kuzmenko
|
||||||
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
||||||
|
*
|
||||||
|
* Originally from:
|
||||||
|
* https://github.com/zhukov/webogram
|
||||||
|
* Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>
|
||||||
|
* https://github.com/zhukov/webogram/blob/master/LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
import App from "../../config/app";
|
||||||
|
import { MOUNT_CLASS_TO } from "../../config/debug";
|
||||||
|
import Modes from "../../config/modes";
|
||||||
|
import { tsNow } from "../../helpers/date";
|
||||||
|
import sessionStorage from '../sessionStorage';
|
||||||
|
|
||||||
|
export class TelegramMeWebManager {
|
||||||
|
private disabled = /* false && */(Modes.test || App.domains.indexOf(location.hostname) === -1);
|
||||||
|
|
||||||
|
public async setAuthorized(canRedirect: boolean) {
|
||||||
|
if(this.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sessionStorage.get('tgme_sync').then((curValue) => {
|
||||||
|
const ts = tsNow(true);
|
||||||
|
if(canRedirect &&
|
||||||
|
curValue &&
|
||||||
|
curValue.canRedirect === canRedirect &&
|
||||||
|
(curValue.ts + 86400) > ts) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sessionStorage.set({
|
||||||
|
tgme_sync: {
|
||||||
|
canRedirect,
|
||||||
|
ts
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const urls = [
|
||||||
|
'//telegram.me/_websync_?authed=' + (canRedirect ? '1' : '0'),
|
||||||
|
'//t.me/_websync_?authed=' + (canRedirect ? '1' : '0')
|
||||||
|
];
|
||||||
|
|
||||||
|
const promises = urls.map(url => {
|
||||||
|
const script = document.createElement('script');
|
||||||
|
const promise = new Promise<void>((resolve) => {
|
||||||
|
script.onload = script.onerror = () => {
|
||||||
|
script.remove();
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
script.src = url;
|
||||||
|
document.body.appendChild(script);
|
||||||
|
return promise;
|
||||||
|
});
|
||||||
|
|
||||||
|
return Promise.all(promises);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const telegramMeWebManager = new TelegramMeWebManager();
|
||||||
|
MOUNT_CLASS_TO && (MOUNT_CLASS_TO.telegramMeWebManager = telegramMeWebManager);
|
||||||
|
export default telegramMeWebManager;
|
@ -25,7 +25,11 @@ const sessionStorage = new LocalStorageController<{
|
|||||||
dc5_server_salt: string,
|
dc5_server_salt: string,
|
||||||
server_time_offset: number,
|
server_time_offset: number,
|
||||||
xt_instance: AppInstance,
|
xt_instance: AppInstance,
|
||||||
kz_version: 'K' | 'Z'
|
kz_version: 'K' | 'Z',
|
||||||
|
tgme_sync: {
|
||||||
|
canRedirect: boolean,
|
||||||
|
ts: number
|
||||||
|
}
|
||||||
}>(/* ['kz_version'] */);
|
}>(/* ['kz_version'] */);
|
||||||
MOUNT_CLASS_TO.appStorage = sessionStorage;
|
MOUNT_CLASS_TO.appStorage = sessionStorage;
|
||||||
export default sessionStorage;
|
export default sessionStorage;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user