mirror of
https://git.ugnet.gay/CrossTalk/azul.git
synced 2026-05-27 22:59:49 +00:00
production init
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from .entry import register
|
||||
@@ -0,0 +1,62 @@
|
||||
from typing import Optional, Callable
|
||||
import asyncio, settings
|
||||
|
||||
from aiohttp import web
|
||||
|
||||
from core.backend import Backend
|
||||
from util.misc import Logger
|
||||
|
||||
from .msnp import MSNPCtrl
|
||||
|
||||
def register(loop: asyncio.AbstractEventLoop, backend: Backend, http_app: web.Application) -> None:
|
||||
from util.misc import ProtocolRunner
|
||||
from . import msnp_dp, msnp_ns, msnp_sb
|
||||
from .http import appdirectory, abservice, gateway, other
|
||||
|
||||
backend.add_runner(ProtocolRunner('0.0.0.0', 1863, ListenerMSNP, args = ['MSNP Dispatch', backend, msnp_dp.MSNPCtrlDP], service = 'MSNP Dispatch'))
|
||||
backend.add_runner(ProtocolRunner('0.0.0.0', 1864, ListenerMSNP, args = ['MSNP Notification', backend, msnp_ns.MSNPCtrlNS], service = 'MSNP Notification'))
|
||||
backend.add_runner(ProtocolRunner('0.0.0.0', 1865, ListenerMSNP, args = ['MSNP Switchboard', backend, msnp_sb.MSNPCtrlSB], service = "MSNP Switchboard"))
|
||||
appdirectory.register(http_app)
|
||||
other.register(http_app)
|
||||
abservice.register(http_app)
|
||||
gateway.register(loop, http_app)
|
||||
|
||||
class ListenerMSNP(asyncio.Protocol):
|
||||
logger: Logger
|
||||
backend: Backend
|
||||
controller: MSNPCtrl
|
||||
transport: Optional[asyncio.WriteTransport]
|
||||
|
||||
def __init__(self, logger_prefix: str, backend: Backend, controller_factory: Callable[[Logger, str, Backend], MSNPCtrl]) -> None:
|
||||
super().__init__()
|
||||
self.logger = Logger(logger_prefix, self)
|
||||
self.backend = backend
|
||||
self.controller = controller_factory(self.logger, 'direct', backend)
|
||||
self.controller.close_callback = self._on_close
|
||||
self.transport = None
|
||||
|
||||
def connection_made(self, transport: asyncio.BaseTransport) -> None:
|
||||
assert isinstance(transport, asyncio.WriteTransport)
|
||||
self.transport = transport
|
||||
self.logger.log_connect()
|
||||
self.controller.on_connect()
|
||||
|
||||
def connection_lost(self, exc: Optional[Exception]) -> None:
|
||||
self.controller.close()
|
||||
self.logger.log_disconnect()
|
||||
self.transport = None
|
||||
|
||||
def data_received(self, data: bytes) -> None:
|
||||
transport = self.transport
|
||||
assert transport is not None
|
||||
# Setting `transport` to None so all data is held until the flush
|
||||
self.controller.transport = None
|
||||
if self.controller.transport is None:
|
||||
self.controller.transport = self.transport
|
||||
self.controller.data_received(data)
|
||||
transport.write(self.controller.flush())
|
||||
self.controller.transport = transport
|
||||
|
||||
def _on_close(self) -> None:
|
||||
if self.transport is None: return
|
||||
self.transport.close()
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
from .impl import DB
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10351359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Nine Men's Morris",
|
||||
"description": "A 9 pieces Tic-Tac-Toe spin-off. Originally developed by Doron for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/morris/index.en-us.html",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/morris/imgs/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10361359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Nine Men's Morris",
|
||||
"description": "A 9 pieces Tic-Tac-Toe spin-off (Hebrew). Originally developed by Doron for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/morris/index.he-il.html",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/morris/imgs/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 20701359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Backgammon",
|
||||
"description": "The game of luck and skill. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/backgammon/backgammon.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/backgammon/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10311359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Battleships",
|
||||
"description": "Sink your opponent's fleet. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/battleships/battleships.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/battleships/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10321359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Chess",
|
||||
"description": "The king's game. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/chess/chess.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/chess/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10531359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Connect 4",
|
||||
"description": "Four in a row. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/connect4/connect4.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/connect4/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10601359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Memory",
|
||||
"description": "Find the matching pairs. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/memory/memory.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/memory/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10291359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Reversi",
|
||||
"description": "Also known as Othello. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/reversi/reversi.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/reversi/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 20601359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Tetris",
|
||||
"description": "The simple, highly addictive, real-time puzzle game. Originally developed by Koen for games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/tetris/tetris.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/tetris/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": true,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 10301359,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 102,
|
||||
"name": "Yahtzee",
|
||||
"description": "The famous dice game. Originally developed by Koen of games.mess.be",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/yahtzee/yahtzee.htm",
|
||||
"icon_url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/messbe/yahtzee/images/icon.png",
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": true,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": false,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": 101,
|
||||
"kids": true,
|
||||
"page": 1,
|
||||
"category_id": 101,
|
||||
"name": "Tic Tac Toe",
|
||||
"description": "Play against your friends in a game of Tic Tac Toe. Originally developed by Microsoft.",
|
||||
"url": "http://mactivities.msgrsvcs.ctsrv.gay/static/app-data/tic-tac-toe/tictactoe.htm",
|
||||
"icon_url": null,
|
||||
"type": "dir",
|
||||
"height": 500,
|
||||
"width": 500,
|
||||
"location": "side",
|
||||
"min_users": 2,
|
||||
"max_users": 2,
|
||||
"enable_ip": false,
|
||||
"activex": false,
|
||||
"send_file": false,
|
||||
"send_im": false,
|
||||
"receive_im": false,
|
||||
"replace_im": false,
|
||||
"windows": false,
|
||||
"max_packet_rate": 120,
|
||||
"user_properties": false,
|
||||
"minimum_client_version": null,
|
||||
"app_type": 0,
|
||||
"hidden": false
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"id": 100,
|
||||
"app_type": 1,
|
||||
"name": "CrossTalk",
|
||||
"description": null
|
||||
},
|
||||
{
|
||||
"id": 101,
|
||||
"app_type": 0,
|
||||
"name": "Microsoft",
|
||||
"description": null
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"app_type": 0,
|
||||
"name": "Mess.be Games",
|
||||
"description": null
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,30 @@
|
||||
from typing import Dict, Any
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
class DB:
|
||||
def __init__(self):
|
||||
dir_path = Path(__file__).parent # Change 'dir' to 'dir_path'
|
||||
|
||||
self.categories = [
|
||||
Category(c)
|
||||
for c in json.loads((dir_path / 'category.json').read_text())
|
||||
]
|
||||
|
||||
app_dir = dir_path / 'app' # Change 'dir' to 'dir_path'
|
||||
self.apps = {
|
||||
locale.name: [
|
||||
App(json.loads(f.read_text()), locale.name)
|
||||
for f in (app_dir / locale).glob('*.json')
|
||||
] for locale in (app_dir).iterdir() if locale.is_dir()
|
||||
}
|
||||
|
||||
class Base:
|
||||
def __init__(self, json: Dict[str, Any]) -> None:
|
||||
self.__dict__.update(json)
|
||||
|
||||
class Category(Base): pass
|
||||
class App(Base):
|
||||
def __init__(self, json: Dict[str, Any], locale: str) -> None:
|
||||
super().__init__(json)
|
||||
self.locale = (None if locale == 'none' else locale)
|
||||
@@ -0,0 +1,260 @@
|
||||
from aiohttp import web
|
||||
import lxml, jinja2, secrets, util.misc
|
||||
from markupsafe import Markup
|
||||
from .util import render, preprocess_soap
|
||||
|
||||
from .appdirdb import DB
|
||||
|
||||
TMPL_DIR = 'front/msn/http/tmpl/appdir'
|
||||
|
||||
def register(app: web.Application) -> None:
|
||||
util.misc.add_to_jinja_env(app, 'appdir', TMPL_DIR, globals = {
|
||||
'bool_to_str': _bool_to_str,
|
||||
})
|
||||
|
||||
# Version cacche
|
||||
app.router.add_get('/AppDirectory/GetAppdirVersion.aspx', handle_getappdirversion)
|
||||
# AppDirctory SOAP service
|
||||
app.router.add_get('/AppDirectory/AppDirectory.asmx', handle_appdirectory)
|
||||
app.router.add_post('/AppDirectory/AppDirectory.asmx', handle_appdirectory)
|
||||
app.router.add_get(r'/~Live.ConfigServer/{junk:.*}/~op-GetFilteredDataSet2/', handle_appdirectory)
|
||||
app.router.add_get(r'/~Live.ConfigServer/{junk:.*}/~op-GetFilteredDataSet2/{tail:.*}', handle_appdirectory)
|
||||
# Activities page
|
||||
app.router.add_get('/AppDirectory/Directory.aspx', page_directory)
|
||||
|
||||
async def handle_getappdirversion(req):
|
||||
return render(req, 'appdir:GetAppdirVersion.html', {
|
||||
'version': secrets.token_urlsafe(128),
|
||||
})
|
||||
|
||||
async def handle_appdirectory(req):
|
||||
action = None
|
||||
action_str = None
|
||||
ver = ''
|
||||
seg_args = {}
|
||||
if req.method == 'POST':
|
||||
action = await _preprocess_soap(req)
|
||||
if action is None:
|
||||
return web.Response(status=500, text='')
|
||||
action_str = _get_tag_localname(action)
|
||||
elif req.method == 'GET':
|
||||
if 'op' in req.query:
|
||||
action_str = req.query.get('op')
|
||||
ver = req.query.get('ver', '')
|
||||
elif req.match_info.get('tail') is not None:
|
||||
action_str = 'GetFilteredDataSet2'
|
||||
parts = [p for p in req.match_info['tail'].split('/') if p]
|
||||
for seg in parts:
|
||||
if not seg.startswith('~') or '-' not in seg:
|
||||
continue
|
||||
key, val = seg[1:].split('-', 1)
|
||||
seg_args[key.lower()] = val
|
||||
ver = seg_args.get('ts', '')
|
||||
seg_args['locale'] = seg_args.get('locale')
|
||||
try:
|
||||
seg_args['page'] = int(seg_args.get('page', 0))
|
||||
seg_args['kids'] = int(seg_args.get('kids', -1))
|
||||
seg_args['app_type'] = int(seg_args.get('apptype', 0))
|
||||
except ValueError:
|
||||
return web.Response(status=500, text='')
|
||||
else:
|
||||
return web.Response(status=500, text='')
|
||||
else:
|
||||
return web.Response(status=405, text='')
|
||||
if action_str == 'GetFullDataSet':
|
||||
results = []
|
||||
db = DB()
|
||||
for apps_locale in db.apps.values():
|
||||
results.extend([_create_entry_container(req, i, entry) for i, entry in enumerate(apps_locale)])
|
||||
results.extend([_create_category(req, 'en-US', category, i) for i, category in enumerate(db.categories)])
|
||||
if req.method == 'POST':
|
||||
diffgram = _create_diffgram(req, Markup(''.join(results)))
|
||||
return render(req, 'appdir:GetFullDataSetResponse.xml', {'diffgram': Markup(diffgram)})
|
||||
else:
|
||||
return render(req, 'appdir:AppDir.xml', {'v': ver, 'results': Markup(''.join(results))})
|
||||
elif action_str == 'GetFilteredDataSet2':
|
||||
if req.method == 'POST':
|
||||
locale = _get_action_argument(req, action, 'locale')
|
||||
if locale is not None:
|
||||
locale = str(locale)
|
||||
try:
|
||||
page = int(_get_action_argument(req, action, 'Page'))
|
||||
kids = int(_get_action_argument(req, action, 'Kids'))
|
||||
app_type = int(_get_action_argument(req, action, 'AppType'))
|
||||
except:
|
||||
return web.Response(status=500, text='')
|
||||
else:
|
||||
locale = req.query.get('Locale') or seg_args.get('locale')
|
||||
page = seg_args.get('page') or int(req.query.get('Page', 0))
|
||||
kids = seg_args.get('kids') or int(req.query.get('Kids', -1))
|
||||
app_type = seg_args.get('app_type') or int(req.query.get('AppType', 0))
|
||||
results = []
|
||||
db = DB()
|
||||
entries = [app for app in db.apps['none'] if app.page == page and app.app_type == app_type]
|
||||
if locale and locale in db.apps:
|
||||
entries.extend([app for app in db.apps[locale] if app.page == page and app.app_type == app_type])
|
||||
if kids >= 0:
|
||||
entries = [app for app in entries if app.kids == (kids == 1)]
|
||||
categories_filtered = []
|
||||
for category in db.categories:
|
||||
if category.app_type != app_type:
|
||||
continue
|
||||
for entry in entries:
|
||||
if entry.category_id == category.id:
|
||||
categories_filtered.append(category)
|
||||
break
|
||||
results.extend([_create_entry_container(req, i, entry) for i, entry in enumerate(entries)])
|
||||
results.extend([_create_category(req, locale, category, i) for i, category in enumerate(categories_filtered)])
|
||||
if req.method == 'POST':
|
||||
diffgram = _create_diffgram(req, Markup(''.join(results)))
|
||||
return render(req, 'appdir:GetFilteredDataSet2Response.xml', {'diffgram': Markup(diffgram)})
|
||||
else:
|
||||
return render(req, 'appdir:AppDir.xml', {'v': ver, 'results': Markup(''.join(results))})
|
||||
elif action_str == 'GetAppEntry':
|
||||
try:
|
||||
id = int(_get_action_argument(req, action, 'ID'))
|
||||
except:
|
||||
return web.Response(status=500, text='')
|
||||
entry = None
|
||||
db = DB()
|
||||
for apps_locale in db.apps.values():
|
||||
for app in apps_locale:
|
||||
if app.id == id:
|
||||
entry = app
|
||||
break
|
||||
if entry is not None:
|
||||
break
|
||||
if req.method == 'POST':
|
||||
entry_markup = None
|
||||
if entry:
|
||||
entry_markup = Markup(_create_entry(req, 0, entry))
|
||||
return render(req, 'appdir:GetAppEntryResponse.xml', {'entry': entry_markup})
|
||||
else:
|
||||
if entry:
|
||||
return web.Response(status=200, content_type='text/xml', text=_create_entry_container(req, 0, entry, extra=f' code="2" v="{ver}"'))
|
||||
return web.Response(status=200, content_type='text/xml', text='')
|
||||
else:
|
||||
return web.Response(status=500, text='')
|
||||
|
||||
async def page_directory(req):
|
||||
app_entries_js = []
|
||||
results = []
|
||||
locale = req.query.get('L') or 'en-US'
|
||||
|
||||
db = DB()
|
||||
categories = db.categories
|
||||
entries = db.apps
|
||||
|
||||
category_tmpl = req.app['jinja_env'].get_template('appdir:Directory/Directory.category.html')
|
||||
entry_tmpl = req.app['jinja_env'].get_template('appdir:Directory/Directory.entry.html')
|
||||
category_end_tmpl = req.app['jinja_env'].get_template('appdir:Directory/Directory.category.end.html')
|
||||
|
||||
for category in categories:
|
||||
filtered_entries = [
|
||||
app for app in entries['none']
|
||||
if app.category_id == category.id
|
||||
]
|
||||
if locale and locale in entries:
|
||||
filtered_entries.extend([
|
||||
app for app in entries[locale]
|
||||
if app.category_id == category.id
|
||||
])
|
||||
if not filtered_entries:
|
||||
continue
|
||||
|
||||
results.append(category_tmpl.render(
|
||||
cat_id = category.id,
|
||||
cat_name = category.name,
|
||||
))
|
||||
|
||||
for entry in filtered_entries:
|
||||
results.append(entry_tmpl.render(
|
||||
app_id = entry.id,
|
||||
description = entry.description,
|
||||
name = entry.name,
|
||||
))
|
||||
app_entries_js.append(APP_ENTRY_JS.format(
|
||||
entry.id, (1 if entry.kids else 0), entry.min_users, entry.max_users,
|
||||
))
|
||||
|
||||
results.append(category_end_tmpl.render(
|
||||
cat_id = category.id,
|
||||
))
|
||||
|
||||
return render(req, 'appdir:Directory/Directory.html', {
|
||||
'app_entries_js': Markup(''.join(app_entries_js)),
|
||||
'results': Markup(''.join(results)),
|
||||
})
|
||||
|
||||
# TODO: remove and replace with util.preprocess_soap
|
||||
async def _preprocess_soap(req):
|
||||
from lxml.objectify import fromstring as parse_xml
|
||||
|
||||
body = await req.read()
|
||||
root = parse_xml(body)
|
||||
|
||||
action = _find_element(root, 'Body/*[1]')
|
||||
|
||||
return action
|
||||
|
||||
def _get_action_argument(req, action, name):
|
||||
result = None
|
||||
if req.method == 'POST':
|
||||
result = _find_element(action, name)
|
||||
elif req.method == 'GET':
|
||||
result = req.query.get(name)
|
||||
|
||||
return result
|
||||
|
||||
def _create_entry_container(req, i, entry, *, extra = None):
|
||||
entry_container_tmpl = req.app['jinja_env'].get_template('appdir:Entry_container.xml')
|
||||
if req.method == 'POST':
|
||||
extra = Markup(' diffgr:id="Entry{}" msdata:rowOrder="{}" diffgr:hasChanges="inserted"'.format(i + 1, i))
|
||||
elif extra is not None and req.method != 'POST':
|
||||
extra = Markup(extra)
|
||||
|
||||
return entry_container_tmpl.render(
|
||||
extra = extra,
|
||||
entry = Markup(_create_entry(req, i, entry)),
|
||||
)
|
||||
|
||||
def _create_entry(req, i, entry):
|
||||
entry_tmpl = req.app['jinja_env'].get_template('appdir:Entry.xml')
|
||||
return entry_tmpl.render(entry = entry, i = i)
|
||||
|
||||
def _create_category(req, locale, category, i):
|
||||
category_tmpl = req.app['jinja_env'].get_template('appdir:Category.xml')
|
||||
extra = None
|
||||
if req.method == 'POST':
|
||||
extra = Markup(' diffgr:id="Category{}" msdata:rowOrder="{}" diffgr:hasChanges="inserted"'.format(i + 1, i))
|
||||
|
||||
return category_tmpl.render(
|
||||
extra = extra,
|
||||
locale = locale,
|
||||
category = category,
|
||||
)
|
||||
|
||||
def _create_diffgram(req, results):
|
||||
diffgram_tmpl = req.app['jinja_env'].get_template('appdir:diffgram.xml')
|
||||
return diffgram_tmpl.render(
|
||||
results = results,
|
||||
)
|
||||
|
||||
def _get_tag_localname(elm):
|
||||
return lxml.etree.QName(elm.tag).localname
|
||||
|
||||
def _bool_to_str(b):
|
||||
return 'True' if b else 'False'
|
||||
|
||||
def _find_element(xml, query):
|
||||
thing = xml.find('.//{*}' + query.replace('/', '/{*}'))
|
||||
if isinstance(thing, lxml.objectify.StringElement):
|
||||
thing = str(thing)
|
||||
elif isinstance(thing, lxml.objectify.BoolElement):
|
||||
thing = bool(thing)
|
||||
elif isinstance(thing, lxml.objectify.IntElement):
|
||||
thing = int(thing)
|
||||
return thing
|
||||
|
||||
APP_ENTRY_JS = ''' [{}, [{}, {}, {}, ""]],
|
||||
'''
|
||||
@@ -0,0 +1,102 @@
|
||||
from typing import Dict
|
||||
import time, asyncio, settings
|
||||
from aiohttp import web
|
||||
|
||||
from util.misc import Logger, gen_uuid
|
||||
from front.msn.msnp import MSNPCtrl
|
||||
|
||||
def register(loop: asyncio.AbstractEventLoop, app: web.Application) -> None:
|
||||
gateway_sessions = {} # type: Dict[str, GatewaySession]
|
||||
app['gateway_sessions'] = gateway_sessions
|
||||
app.router.add_route('OPTIONS', '/gateway/gateway.dll', handle_http_gateway_options)
|
||||
app.router.add_post('/gateway/gateway.dll', handle_http_gateway)
|
||||
|
||||
loop.create_task(_clean_gateway_sessions(gateway_sessions))
|
||||
|
||||
async def _clean_gateway_sessions(gateway_sessions: Dict[str, 'GatewaySession']) -> None:
|
||||
while True:
|
||||
await asyncio.sleep(10)
|
||||
now = time.time()
|
||||
closed = []
|
||||
for session_id, gwsess in gateway_sessions.items():
|
||||
if gwsess.time_last_connect + gwsess.timeout <= now:
|
||||
gwsess.controller.close()
|
||||
closed.append(session_id)
|
||||
for session_id in closed:
|
||||
del gateway_sessions[session_id]
|
||||
|
||||
class GatewaySession:
|
||||
__slots__ = ('logger', 'hostname', 'controller', 'timeout', 'time_last_connect')
|
||||
|
||||
logger: Logger
|
||||
hostname: str
|
||||
controller: MSNPCtrl
|
||||
timeout: float
|
||||
time_last_connect: float
|
||||
|
||||
def __init__(self, logger: Logger, hostname: str, controller: MSNPCtrl, now: float) -> None:
|
||||
self.logger = logger
|
||||
self.hostname = hostname
|
||||
self.controller = controller
|
||||
self.timeout = 60
|
||||
self.time_last_connect = now
|
||||
|
||||
def _on_close(self) -> None:
|
||||
self.time_last_connect = 0
|
||||
|
||||
async def handle_http_gateway_options(req: web.Request) -> web.Response:
|
||||
return web.HTTPOk(headers = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'POST',
|
||||
'Access-Control-Allow-Headers': 'Content-Type',
|
||||
'Access-Control-Expose-Headers': 'X-MSN-Messenger',
|
||||
'Access-Control-Max-Age': '86400',
|
||||
})
|
||||
|
||||
async def handle_http_gateway(req: web.Request) -> web.Response:
|
||||
query = req.query
|
||||
session_id = query.get('SessionID')
|
||||
action = query.get('Action')
|
||||
backend = req.app['backend']
|
||||
gateway_sessions = req.app['gateway_sessions'] # type: Dict[str, GatewaySession]
|
||||
now = time.time()
|
||||
|
||||
if not session_id:
|
||||
from front.msn.msnp_ns import MSNPCtrlNS
|
||||
from front.msn.msnp_sb import MSNPCtrlSB
|
||||
|
||||
# Create new GatewaySession
|
||||
server_type = query.get('Server')
|
||||
server_ip = query.get('IP') or ''
|
||||
session_id = gen_uuid()
|
||||
|
||||
logger = Logger('MSN {} via HTTP Gateway'.format(server_type), session_id)
|
||||
|
||||
if server_type == 'NS':
|
||||
controller = MSNPCtrlNS(logger, 'gw', backend) # type: MSNPCtrl
|
||||
else:
|
||||
controller = MSNPCtrlSB(logger, 'gw', backend)
|
||||
|
||||
tmp = GatewaySession(logger, server_ip, controller, now)
|
||||
controller.close_callback = tmp._on_close
|
||||
gateway_sessions[session_id] = tmp
|
||||
gwsess = gateway_sessions.get(session_id)
|
||||
if gwsess is None:
|
||||
raise web.HTTPBadRequest()
|
||||
|
||||
assert req.transport is not None
|
||||
if gwsess.time_last_connect != now:
|
||||
gwsess.time_last_connect = now
|
||||
if action != 'poll':
|
||||
gwsess.logger.log_connect()
|
||||
gwsess.controller.data_received(await req.read(), transport = req.transport)
|
||||
gwsess.logger.log_disconnect()
|
||||
body = gwsess.controller.flush()
|
||||
|
||||
return web.HTTPOk(headers = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'POST',
|
||||
'Access-Control-Expose-Headers': 'X-MSN-Messenger',
|
||||
'X-MSN-Messenger': 'SessionID={}; GW-IP={}'.format(session_id, settings.TARGET_IP),
|
||||
'Content-Type': 'application/x-msn-messenger',
|
||||
}, body = body)
|
||||
@@ -0,0 +1,921 @@
|
||||
from typing import Optional, Any, Tuple
|
||||
from datetime import datetime, timedelta
|
||||
from io import BytesIO
|
||||
from email.parser import Parser
|
||||
from email.header import decode_header
|
||||
from email.utils import parsedate_to_datetime
|
||||
from urllib.parse import unquote, parse_qsl
|
||||
from pathlib import Path
|
||||
import re, secrets, base64, random, json, mimetypes, uuid, PyRSS2Gen, settings, util.misc
|
||||
from markupsafe import Markup
|
||||
from aiohttp import web
|
||||
|
||||
from core import models
|
||||
from core.backend import Backend, BackendSession
|
||||
from ..misc import gen_mail_data, format_oim, cid_format, puid_format
|
||||
from .util import find_element, get_tag_localname, render, preprocess_soap, unknown_soap, bool_to_str
|
||||
|
||||
LOGIN_PATH = '/login.srf'
|
||||
TMPL_DIR = 'front/msn/http/tmpl'
|
||||
ETC_DIR = 'front/msn/etc'
|
||||
PP = 'Passport1.4'
|
||||
|
||||
def register(app: web.Application) -> None:
|
||||
util.misc.add_to_jinja_env(app, 'msn', TMPL_DIR, globals = {
|
||||
'date_format': util.misc.date_format,
|
||||
'cid_format': cid_format,
|
||||
'puid_format': puid_format,
|
||||
'bool_to_str': bool_to_str,
|
||||
'contact_is_favorite': _contact_is_favorite,
|
||||
'datetime': datetime,
|
||||
})
|
||||
|
||||
# MSN >= 5
|
||||
app.router.add_get('/nexus-mock', handle_nexus)
|
||||
app.router.add_get('/rdr/pprdr.asp', handle_nexus)
|
||||
app.router.add_get(LOGIN_PATH, handle_login)
|
||||
app.router.add_get('/svcs/mms/tabs.asp', handle_tabs)
|
||||
app.router.add_get('/svcs/mms/portal.asp', handle_portal)
|
||||
app.router.add_get('/svcs/mms/ads.asp', handle_msn5ads)
|
||||
|
||||
# MSN >= 6
|
||||
app.router.add_get('/etc/MsgrConfig', handle_msgrconfig)
|
||||
app.router.add_post('/etc/MsgrConfig', handle_msgrconfig)
|
||||
# TODO: this is stupid, find a way to make this case-insensitive
|
||||
app.router.add_get('/Config/MsgrConfig.asmx', handle_msgrconfig)
|
||||
app.router.add_post('/Config/MsgrConfig.asmx', handle_msgrconfig)
|
||||
app.router.add_get('/config/MsgrConfig.asmx', handle_msgrconfig)
|
||||
app.router.add_post('/config/MsgrConfig.asmx', handle_msgrconfig)
|
||||
app.router.add_get('/start', handle_today)
|
||||
|
||||
# MSN >= 7.5
|
||||
app.router.add_route('OPTIONS', '/NotRST.srf', handle_not_rst)
|
||||
app.router.add_post('/NotRST.srf', handle_not_rst)
|
||||
app.router.add_post('/RST.srf', handle_rst)
|
||||
app.router.add_post('////RST.srf', handle_rst) # libpurple what the FUCK, also this doesn't even work
|
||||
app.router.add_post('/RST2.srf', lambda req: handle_rst(req, rst2 = True))
|
||||
|
||||
# MSN >= 8
|
||||
app.router.add_post('/storageservice/SchematizedStore.asmx', handle_storageservice)
|
||||
app.router.add_post('/ppsecure/sha1auth.srf', handle_sha1auth)
|
||||
app.router.add_post('/rsi/rsi.asmx', handle_rsi)
|
||||
app.router.add_post('/OimWS/oim.asmx', handle_oim)
|
||||
app.router.add_get('/svcs/msn-video-feeds/', handle_videofeed) # adding an ending back-slash is required, or else it 404s. ????
|
||||
app.router.add_get('/svcs/feed', lambda req: handle_videofeed(req, get_videos = True))
|
||||
|
||||
# MSN >= 14
|
||||
app.router.add_post('/whatsnew/whatsnewservice.asmx', handle_whatsnew)
|
||||
app.router.add_get('/svcs/tab={id}', handle_tabs_newer)
|
||||
|
||||
# MSN >= 15
|
||||
app.router.add_post('/sqm/messenger/sqmserver.dll', handle_blankok)
|
||||
app.router.add_post('/sqm/WindowsLive/sqmserver.dll', handle_blankok)
|
||||
app.router.add_post('/uploaddata.aspx', handle_blankok)
|
||||
app.router.add_get('/ppcrlcheck.srf', handle_ppcrlcheck)
|
||||
app.router.add_post('/profile/profile.asmx', handle_blankok) # TODO: do the thing
|
||||
app.router.add_get(r'/~Live.ConfigServer/{junk:.*}/~op-GetClientConfig/{tail:.*}', handle_msgrconfig16)
|
||||
app.router.add_get(r'/~Live.ConfigServer.SuiteUpdate/{tail:.*}', handle_suiteupdate)
|
||||
app.router.add_get(r'/~Live.ConfigServer.PSA/{tail:.*}', handle_socialint)
|
||||
app.router.add_get('/svcs/GameBrowser', handle_gamebrowser)
|
||||
|
||||
# Misc
|
||||
app.router.add_get('/{i}meen_{locale}/{id}', handle_msn_redirect)
|
||||
|
||||
async def handle_blankok(req: web.Request) -> web.Response:
|
||||
return web.Response(status = 200)
|
||||
|
||||
async def handle_storageservice(req: web.Request) -> web.Response:
|
||||
backend = req.app['backend']
|
||||
header, action, bs, token = await preprocess_soap(req)
|
||||
assert bs is not None
|
||||
soapaction = (req.headers.get('SOAPAction') or '')
|
||||
if soapaction.startswith('"') and soapaction.endswith('"'):
|
||||
soapaction = soapaction[1:-1]
|
||||
storage_ns = ('w10' if soapaction.startswith('http://www.msn.com/webservices/storage/w10/') else '2008')
|
||||
action_str = get_tag_localname(action)
|
||||
now_str = util.misc.date_format(datetime.utcnow())
|
||||
user = bs.user
|
||||
cachekey = secrets.token_urlsafe(172)
|
||||
|
||||
cid = cid_format(user.uuid)
|
||||
|
||||
if action_str == 'GetProfile':
|
||||
roaming_info = backend.user_service.get_roaming_info(user)
|
||||
assert roaming_info is not None
|
||||
|
||||
storage_path = _get_storage_path(user.uuid)
|
||||
files = None
|
||||
if storage_path.exists() and storage_path.is_dir():
|
||||
files = [x for x in storage_path.iterdir() if '_thumb' not in x.stem]
|
||||
|
||||
mime = None
|
||||
image_size = 0
|
||||
image_thumb_size = 0
|
||||
|
||||
if files:
|
||||
ext = files[0].suffix
|
||||
mime = ext[1:]
|
||||
image_path = storage_path / '{}{}'.format(user.uuid, ext)
|
||||
image_thumb_path = storage_path / '{}_thumb{}'.format(user.uuid, ext)
|
||||
|
||||
if image_path.exists():
|
||||
image_size = image_path.stat().st_size
|
||||
|
||||
if image_thumb_path.exists():
|
||||
image_thumb_size = image_thumb_path.stat().st_size
|
||||
|
||||
|
||||
return render(req, 'msn:storageservice/GetProfileResponse.xml', {
|
||||
'storage_ns': storage_ns,
|
||||
'cachekey': cachekey,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user,
|
||||
'now': now_str,
|
||||
'mime': mime,
|
||||
'size_static': image_size,
|
||||
'size_small': image_thumb_size,
|
||||
'roaming_info': roaming_info,
|
||||
'host': settings.USERSTORAGE_HOST,
|
||||
})
|
||||
if action_str == 'FindDocuments':
|
||||
# TODO: FindDocuments
|
||||
return render(req, 'msn:storageservice/FindDocumentsResponse.xml', {
|
||||
'storage_ns': storage_ns,
|
||||
'cachekey': cachekey,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user,
|
||||
})
|
||||
if action_str == 'UpdateProfile':
|
||||
delete_psm = False
|
||||
delete_name = False
|
||||
delete_avatar = False
|
||||
|
||||
# TODO: More properties?
|
||||
|
||||
# Update to roaming name/message
|
||||
# ```
|
||||
# <UpdateProfile xmlns="http://www.msn.com/webservices/storage/w10">
|
||||
# <profile>
|
||||
# <ResourceID>862d987eb60b7a63!106</ResourceID>
|
||||
# <ExpressionProfile>
|
||||
# <FreeText>Update</FreeText>
|
||||
# <DisplayName>Society is betrayal</DisplayName>
|
||||
# <PersonalStatus>Prosperity is the best medicine. :)</PersonalStatus>
|
||||
# </ExpressionProfile>
|
||||
# </profile>
|
||||
# </UpdateProfile>
|
||||
# ```
|
||||
|
||||
# Remove roaming message
|
||||
# ```
|
||||
# <UpdateProfile xmlns="http://www.msn.com/webservices/storage/w10">
|
||||
# <profile>
|
||||
# <ResourceID>bb4542ce2eacdbde!106</ResourceID>
|
||||
# <ExpressionProfile>
|
||||
# <FreeText>Update</FreeText>
|
||||
# <DisplayName>%walkingphas3r%</DisplayName>
|
||||
# <Flags>0</Flags>
|
||||
# </ExpressionProfile>
|
||||
# </profile>
|
||||
# <profileAttributesToDelete>
|
||||
# <ExpressionProfileAttributes>
|
||||
# <PersonalStatus>true</PersonalStatus>
|
||||
# </ExpressionProfileAttributes>
|
||||
# </profileAttributesToDelete>
|
||||
# </UpdateProfile>
|
||||
# ```
|
||||
|
||||
expression_profile = find_element(action, 'ExpressionProfile')
|
||||
name = find_element(expression_profile, 'DisplayName')
|
||||
message = find_element(expression_profile, 'PersonalStatus')
|
||||
|
||||
attributes_to_delete = find_element(action, 'profileAttributesToDelete/ExpressionProfileAttributes')
|
||||
if attributes_to_delete is not None:
|
||||
# `PersonalStatus` and `DisplayName` is the only known attribute that has the ability to be deleted
|
||||
delete_psm = find_element(attributes_to_delete, 'PersonalStatus') or False
|
||||
assert isinstance(delete_psm, bool)
|
||||
delete_name = find_element(attributes_to_delete, 'DisplayName') or False
|
||||
assert isinstance(delete_name, bool)
|
||||
|
||||
name = find_element(action, 'DisplayName')
|
||||
message = find_element(action, 'PersonalStatus')
|
||||
|
||||
if name:
|
||||
backend.user_service.save_single_roaming(user, { 'name': name })
|
||||
if message and not delete_psm:
|
||||
backend.user_service.save_single_roaming(user, { 'message': message })
|
||||
|
||||
if delete_psm:
|
||||
backend.user_service.save_single_roaming(user, { 'message': '' })
|
||||
if delete_name:
|
||||
backend.user_service.save_single_roaming(user, { 'name': '' })
|
||||
|
||||
return render(req, 'msn:storageservice/UpdateProfileResponse.xml', {
|
||||
'storage_ns': storage_ns,
|
||||
'cachekey': cachekey,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user
|
||||
})
|
||||
if action_str == 'DeleteRelationships':
|
||||
# TODO: DeleteRelationships
|
||||
return render(req, 'msn:storageservice/DeleteRelationshipsResponse.xml', {
|
||||
'storage_ns': storage_ns,
|
||||
'cachekey': cachekey,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user,
|
||||
})
|
||||
if action_str in ('CreateDocument','UpdateDocument'):
|
||||
return handle_document(req, action, ('Update' if action_str == 'UpdateDocument' else 'Create'), storage_ns, user, cid, token)
|
||||
if action_str == 'CreateRelationships':
|
||||
# TODO: CreateRelationships
|
||||
return render(req, 'msn:storageservice/CreateRelationshipsResponse.xml', {
|
||||
'storage_ns': storage_ns,
|
||||
'cachekey': cachekey,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user,
|
||||
})
|
||||
if action_str in { 'ShareItem' }:
|
||||
# TODO: ShareItem
|
||||
return unknown_soap(req, header, action, expected = True)
|
||||
return unknown_soap(req, header, action)
|
||||
|
||||
def handle_document(req: web.Request, action: Any, type: str, storage_ns: str, user: models.User, cid: str, token: str) -> web.Response:
|
||||
from PIL import Image
|
||||
|
||||
# get image data
|
||||
#name = find_element(action, 'Name')
|
||||
streamtype = find_element(action, 'DocumentStreamType')
|
||||
|
||||
if streamtype == 'UserTileStatic':
|
||||
mime = find_element(action, 'MimeType')
|
||||
#mime = None
|
||||
data = find_element(action, 'Data')
|
||||
data = base64.b64decode(data)
|
||||
|
||||
# WLM sends either `png` or `image/png` as the MIME type no matter what type of file is sent over. Guess image type from header
|
||||
|
||||
# TODO: BMPs
|
||||
if data[:6] in (b'GIF87a',b'GIF89a'):
|
||||
mime = 'gif'
|
||||
elif data[:2] == b'\xff\xd8':
|
||||
mime = 'jpeg'
|
||||
elif data[:8] == b'\x89PNG\x0d\x0a\x1a\x0a':
|
||||
mime = 'png'
|
||||
|
||||
if mime is not None:
|
||||
try:
|
||||
image = Image.open(BytesIO(data))
|
||||
except:
|
||||
return web.HTTPInternalServerError(text = '')
|
||||
|
||||
# store display picture as file
|
||||
path = _get_storage_path(user.uuid)
|
||||
path.mkdir(exist_ok = True, parents = True)
|
||||
|
||||
for old_file in path.glob(f'{user.uuid}.*'):
|
||||
if old_file.is_file():
|
||||
old_file.unlink()
|
||||
for old_thumb in path.glob(f'{user.uuid}_thumb.*'):
|
||||
if old_thumb.is_file():
|
||||
old_thumb.unlink()
|
||||
|
||||
image_path = path / '{uuid}.{mime}'.format(uuid = user.uuid, mime = mime)
|
||||
|
||||
image_path.write_bytes(data)
|
||||
|
||||
thumb = image.resize((21, 21))
|
||||
|
||||
thumb_path = path / '{uuid}_thumb.png'.format(uuid = user.uuid)
|
||||
thumb.save(str(thumb_path))
|
||||
|
||||
return render(req, 'msn:storageservice/{}DocumentResponse.xml'.format(type), {
|
||||
'storage_ns': storage_ns,
|
||||
'cid': cid,
|
||||
'pptoken1': token,
|
||||
'user': user,
|
||||
})
|
||||
|
||||
async def handle_sha1auth(req: web.Request) -> web.Response:
|
||||
# We have no use for any of the actual tokens sent here right now (this is primarily for WLM 8's MSN Today function),
|
||||
# so just redirect to the URL specified by `ru`
|
||||
post = await req.post()
|
||||
|
||||
token_data = post.get('token')
|
||||
if token_data is None:
|
||||
return web.HTTPInternalServerError()
|
||||
|
||||
token_fields = dict(parse_qsl(str(token_data)))
|
||||
if 'ru' not in token_fields:
|
||||
return web.HTTPInternalServerError()
|
||||
|
||||
return web.HTTPFound(token_fields['ru'])
|
||||
|
||||
async def handle_ppcrlcheck(req: web.Request) -> web.Response:
|
||||
response = '<config>\r\n\t<deviceid minversion="16.000.26889.00"/>\r\n\t<mobilecfg minversion="16.000.26208.0"/>\r\n</config>'
|
||||
return web.HTTPOk(body=response)
|
||||
|
||||
async def handle_rsi(req: web.Request) -> web.Response:
|
||||
_, action, bs, token = await preprocess_soap_rsi(req)
|
||||
|
||||
if token is None or bs is None:
|
||||
return render(req, 'msn:oim/Fault.validation.xml', status = 500)
|
||||
action_str = get_tag_localname(action)
|
||||
|
||||
user = bs.user
|
||||
|
||||
backend = req.app['backend']
|
||||
|
||||
if action_str == 'GetMetadata':
|
||||
return render(req, 'msn:oim/GetMetadataResponse.xml', {
|
||||
'md': gen_mail_data(user, backend, on_ns = False, e_node = False),
|
||||
})
|
||||
if action_str == 'GetMessage':
|
||||
oim_uuid = find_element(action, 'messageId')
|
||||
oim_markAsRead = find_element(action, 'alsoMarkAsRead')
|
||||
oim = backend.user_service.get_oim_single(user, oim_uuid, mark_read = oim_markAsRead is True)
|
||||
return render(req, 'msn:oim/GetMessageResponse.xml', {
|
||||
'oim_data': format_oim(oim),
|
||||
})
|
||||
if action_str == 'DeleteMessages':
|
||||
messageIds = action.findall('.//{*}messageIds/{*}messageId')
|
||||
if not messageIds:
|
||||
return render(req, 'msn:oim/Fault.validation.xml', status = 500)
|
||||
for messageId in messageIds:
|
||||
if backend.user_service.get_oim_single(user, str(messageId)) is None:
|
||||
return render(req, 'msn:oim/Fault.validation.xml', status = 500)
|
||||
for messageId in messageIds:
|
||||
backend.user_service.delete_oim(user.uuid, str(messageId))
|
||||
bs.evt.msn_on_oim_deletion(len(messageIds))
|
||||
return render(req, 'msn:oim/DeleteMessagesResponse.xml')
|
||||
|
||||
return render(req, 'msn:Fault.doesnotexist.xml', { 'action': action_str })
|
||||
|
||||
async def handle_oim(req: web.Request) -> web.Response:
|
||||
header, _, body_content, bs, _ = await preprocess_soap_oimws(req)
|
||||
soapaction = (req.headers.get('SOAPAction') or '')
|
||||
if soapaction.startswith('"') and soapaction.endswith('"'):
|
||||
soapaction = soapaction[1:-1]
|
||||
owsns = (
|
||||
'http://messenger.msn.com/ws/2004/09/oim/'
|
||||
if soapaction.startswith('http://messenger.msn.com/ws/2004/09/oim/')
|
||||
else 'http://messenger.live.com/ws/2006/09/oim/'
|
||||
)
|
||||
|
||||
lockkey_result = header.find('.//{*}Ticket').get('lockkey')
|
||||
|
||||
if bs is None or lockkey_result in (None,''):
|
||||
return render(req, 'msn:oim/Fault.authfailed.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
backend: Backend = req.app['backend']
|
||||
user = bs.user
|
||||
detail = user.detail
|
||||
assert detail is not None
|
||||
|
||||
friendlyname = None
|
||||
friendlyname_str = None
|
||||
friendly_charset = None
|
||||
|
||||
friendlyname_mime = header.find('.//{*}From').get('friendlyName')
|
||||
email = header.find('.//{*}From').get('memberName')
|
||||
recipient = header.find('.//{*}To').get('memberName')
|
||||
|
||||
recipient_uuid = backend.util_get_uuid_from_email(recipient)
|
||||
|
||||
if email != user.email or recipient_uuid is None or not _is_on_al(recipient_uuid, backend, user, detail):
|
||||
return render(req, 'msn:oim/Fault.unavailable.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
assert req.transport is not None
|
||||
peername = req.transport.get_extra_info('peername')
|
||||
if peername:
|
||||
host = peername[0]
|
||||
else:
|
||||
host = '127.0.0.1'
|
||||
|
||||
oim_msg_seq = str(find_element(header, 'Sequence/MessageNumber'))
|
||||
if not oim_msg_seq.isnumeric():
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
if friendlyname_mime is not None:
|
||||
try:
|
||||
friendlyname, friendly_charset = decode_header(friendlyname_mime)[0]
|
||||
except:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
if friendly_charset is None:
|
||||
friendly_charset = 'utf-8'
|
||||
|
||||
if friendlyname is not None:
|
||||
friendlyname_str = friendlyname.decode(friendly_charset)
|
||||
|
||||
oim_proxy_string = header.find('.//{*}From').get('proxy')
|
||||
|
||||
try:
|
||||
oim_mime = Parser().parsestr(body_content)
|
||||
except:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
oim_run_id = str(oim_mime.get('X-OIM-Run-Id'))
|
||||
if oim_run_id is None:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
if not re.match(r'^\{?[A-Fa-f0-9]{8,8}-([A-Fa-f0-9]{4,4}-){3,3}[A-Fa-f0-9]{12,12}\}?', oim_run_id):
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
oim_run_id = oim_run_id.replace('{', '').replace('}', '')
|
||||
if (
|
||||
'X-Message-Info', 'Received', 'From', 'To', 'Subject', 'X-OIM-originatingSource', 'X-OIMProxy', 'Message-ID',
|
||||
'X-OriginalArrivalTime', 'Date', 'Return-Path'
|
||||
) in oim_mime.keys():
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
if str(oim_mime.get('MIME-Version')) != '1.0':
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
if not str(oim_mime.get('Content-Type')).startswith('text/plain'):
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
if str(oim_mime.get('Content-Transfer-Encoding')) != 'base64':
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
if str(oim_mime.get('X-OIM-Message-Type')) != 'OfflineMessage':
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
oim_seq_num = str(oim_mime.get('X-OIM-Sequence-Num'))
|
||||
if oim_seq_num != oim_msg_seq:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
oim_headers = {name: str(value) for name, value in oim_mime.items()}
|
||||
|
||||
try:
|
||||
i = body_content.index('\n\n') + 2
|
||||
oim_body = body_content[i:]
|
||||
for oim_b64_line in oim_body.split('\n'):
|
||||
if len(oim_b64_line) > 77:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
oim_body_normal = oim_body.strip()
|
||||
oim_body_normal = base64.b64decode(oim_body_normal).decode('utf-8')
|
||||
|
||||
backend.user_service.save_oim(
|
||||
bs, recipient_uuid, oim_run_id, host, oim_body_normal, True, from_friendly = friendlyname_str,
|
||||
from_friendly_charset = friendly_charset, headers = oim_headers, oim_proxy = oim_proxy_string,
|
||||
)
|
||||
except:
|
||||
return render(req, 'msn:oim/Fault.invalidcontent.xml', {
|
||||
'owsns': owsns,
|
||||
}, status = 500)
|
||||
|
||||
return render(req, 'msn:oim/StoreResponse.xml', {
|
||||
'seq': oim_msg_seq,
|
||||
'owsns': owsns,
|
||||
})
|
||||
|
||||
def _is_on_al(uuid: str, backend: Backend, user: models.User, detail: models.UserDetail) -> bool:
|
||||
contact = detail.contacts.get(uuid)
|
||||
if user.settings.get('BLP', 'AL') == 'AL' and (contact is None or not contact.lists & models.ContactList.BL):
|
||||
return True
|
||||
if user.settings.get('BLP', 'AL') == 'BL' and contact is not None and not contact.lists & models.ContactList.BL:
|
||||
return True
|
||||
|
||||
if contact is not None:
|
||||
ctc_detail = backend._load_detail(contact.head)
|
||||
assert ctc_detail is not None
|
||||
|
||||
ctc_me = ctc_detail.contacts.get(user.uuid)
|
||||
if ctc_me is None and contact.head.settings.get('BLP', 'AL') == 'AL':
|
||||
return True
|
||||
if ctc_me is not None and not ctc_me.lists & models.ContactList.BL:
|
||||
return True
|
||||
return False
|
||||
|
||||
async def preprocess_soap_rsi(req: web.Request) -> Tuple[Any, Any, Optional[BackendSession], str]:
|
||||
from lxml.objectify import fromstring as parse_xml
|
||||
|
||||
body = await req.read()
|
||||
root = parse_xml(body)
|
||||
|
||||
token_tag = root.find('.//{*}PassportCookie/{*}*[1]')
|
||||
if get_tag_localname(token_tag) != 't':
|
||||
token = None
|
||||
token = token_tag.text
|
||||
if token is not None:
|
||||
token = token[0:20]
|
||||
|
||||
backend: Backend = req.app['backend']
|
||||
bs = backend.util_get_sess_by_token(token)
|
||||
|
||||
header = find_element(root, 'Header')
|
||||
action = find_element(root, 'Body/*[1]')
|
||||
#if settings.DEBUG: print('Action: {}'.format(get_tag_localname(action)))
|
||||
|
||||
return header, action, bs, token
|
||||
|
||||
async def preprocess_soap_oimws(req: web.Request) -> Tuple[Any, str, str, Optional[BackendSession], str]:
|
||||
from lxml.objectify import fromstring as parse_xml
|
||||
|
||||
body = await req.read()
|
||||
root = parse_xml(body)
|
||||
|
||||
token = root.find('.//{*}Ticket').get('passport')
|
||||
if token[0:2] == 't=':
|
||||
token = token[2:22]
|
||||
|
||||
backend: Backend = req.app['backend']
|
||||
bs = backend.util_get_sess_by_token(token)
|
||||
|
||||
header = find_element(root, 'Header')
|
||||
body_msgtype = str(find_element(root, 'Body/MessageType'))
|
||||
body_content = str(find_element(root, 'Body/Content')).replace('\r\n', '\n')
|
||||
|
||||
return header, body_msgtype, body_content, bs, token
|
||||
|
||||
# TODO: Make this actually accurate
|
||||
async def handle_whatsnew(req: web.Request) -> web.Response:
|
||||
whatsnew = ''
|
||||
with open('config/whatsnew.json', 'rb') as f:
|
||||
whatsnew_list = json.loads(f.read())
|
||||
f.close()
|
||||
|
||||
if len(whatsnew_list) > 0:
|
||||
whatsnew_dict = whatsnew_list[0]
|
||||
with open(TMPL_DIR + '/whatsnew/WhatsNewResponse.xml') as fh:
|
||||
whatsnew = fh.read()
|
||||
whatsnew = whatsnew.format(
|
||||
date=whatsnew_dict['date'],
|
||||
url=whatsnew_dict['url'],
|
||||
title=whatsnew_dict['title'],
|
||||
appName=whatsnew_dict['appName'],
|
||||
content=whatsnew_dict['content']
|
||||
)
|
||||
|
||||
return web.HTTPOk(content_type = 'text/xml', text = whatsnew)
|
||||
|
||||
async def handle_today(req: web.Request) -> web.Response:
|
||||
return render(req, 'msn:svcs/MSNToday.html', {
|
||||
'title': "CrossTalk Today",
|
||||
'msn': req.query.get('msn') or False,
|
||||
'wlm': req.query.get('wlm') or False,
|
||||
'windowslive': req.query.get('windowslive') or False
|
||||
})
|
||||
|
||||
async def handle_gamebrowser(req: web.Request) -> web.Response:
|
||||
return render(req, 'msn:svcs/GameBrowser.html', {
|
||||
'title': "Game Browser | CrossTalk",
|
||||
})
|
||||
|
||||
async def handle_portal(req: web.Request) -> web.Response:
|
||||
return web.HTTPFound(f'http://today.msgrsvcs.ctsrv.gay/start/msn')
|
||||
|
||||
async def handle_textadredir(req: web.Request) -> web.Response:
|
||||
return web.HTTPFound(f'http://ctsvcs.advertising.ugnet.gay/ads/txt')
|
||||
|
||||
async def handle_banneradredir(req: web.Request) -> web.Response:
|
||||
return web.HTTPFound(f'http://ctsvcs.advertising.ugnet.gay/ads/banner')
|
||||
|
||||
async def handle_msn_redirect(req: web.Request) -> web.Response:
|
||||
i = req.match_info['i']
|
||||
id = req.match_info['id']
|
||||
|
||||
if i == '5':
|
||||
if id == '60':
|
||||
return web.HTTPFound('/svcs/mms/tabs.asp')
|
||||
elif id == '153':
|
||||
return web.HTTPFound('/start')
|
||||
|
||||
return web.HTTPFound('http://g.msn.com{}'.format(req.path_qs))
|
||||
|
||||
async def handle_msn5ads(req: web.Request) -> web.Response:
|
||||
response = '<?xml version="1.0"?><msn-data><RefreshLogin>False</RefreshLogin><RefreshInterval>10080</RefreshInterval></msn-data>'
|
||||
return web.HTTPOk(body=response)
|
||||
|
||||
async def handle_suiteupdate(req: web.Request) -> web.Response:
|
||||
return render(req, 'msn:config/SuiteUpdate.xml')
|
||||
|
||||
async def handle_socialint(req: web.Request) -> web.Response:
|
||||
return render(req, 'msn:config/Config.PSA.xml')
|
||||
|
||||
async def handle_tabs(req: web.Request) -> web.Response:
|
||||
with open('config/tabs.json') as fh:
|
||||
tabs_data = json.load(fh)
|
||||
|
||||
tmpl = req.app['jinja_env'].get_template('msn:svcs/svcs_tabs.xml')
|
||||
tab_tmpl = tmpl.render(tabs=tabs_data)
|
||||
|
||||
return web.HTTPOk(content_type='text/xml', text='<?xml version="1.0"?>\n' + tab_tmpl)
|
||||
|
||||
# TODO: Unify the tabs handlers so spaghetti code isn't a problem
|
||||
async def handle_tabs_newer(req: web.Request) -> web.Response:
|
||||
id = int(req.match_info['id'])
|
||||
|
||||
with open('config/tabs.json') as fh:
|
||||
tabs_data = json.load(fh)
|
||||
|
||||
tab_data = next((tab for tab in tabs_data if tab["id"] == id), None)
|
||||
if not tab_data:
|
||||
return web.HTTPNotFound(text="Tab not found")
|
||||
|
||||
tmpl = req.app['jinja_env'].get_template('msn:svcs/svcs_tabs_newer.xml')
|
||||
tab_tmpl = tmpl.render(tab=tab_data)
|
||||
|
||||
return web.HTTPOk(content_type='text/xml', text=tab_tmpl)
|
||||
|
||||
async def handle_msgrconfig(req: web.Request) -> web.Response:
|
||||
if req.method == 'POST':
|
||||
body = await req.read() # type: Optional[bytes]
|
||||
else:
|
||||
body = None
|
||||
msgr_config = _get_msgr_config(req, body)
|
||||
if msgr_config == 'INVALID_VER':
|
||||
return web.Response(status = 500)
|
||||
return web.HTTPOk(content_type = 'text/xml', text = msgr_config)
|
||||
|
||||
async def handle_msgrconfig16(req: web.Request) -> web.Response:
|
||||
body = await req.read()
|
||||
msgr_config = _get_msgr_config_16(req, body)
|
||||
return web.HTTPOk(content_type = 'text/xml', text = msgr_config)
|
||||
|
||||
def _get_msgr_config(req: web.Request, body: Optional[bytes]) -> str:
|
||||
query = req.query
|
||||
result = None # type: Optional[str]
|
||||
ver = query.get('ver') or ''
|
||||
|
||||
if ver:
|
||||
if re.match(r'[^\d\.]', ver):
|
||||
return 'INVALID_VER'
|
||||
|
||||
config_ver = ver.split('.', 4)
|
||||
if 8 <= int(config_ver[0]) <= 9:
|
||||
with open(TMPL_DIR + '/config/MsgrConfig.wlm.8.xml') as fh:
|
||||
config = fh.read()
|
||||
with open('config/tabs.json') as fh:
|
||||
with open(TMPL_DIR + '/svcs/svcs_tabs.xml') as th:
|
||||
template = th.read()
|
||||
tabs_data = json.load(fh)
|
||||
tmpl_before = req.app['jinja_env'].from_string(template)
|
||||
tab_tmpl = tmpl_before.render(tabs=tabs_data, settings=settings)
|
||||
result = config.format(tabs = tab_tmpl)
|
||||
elif int(config_ver[0]) >= 14:
|
||||
with open(TMPL_DIR + '/config/MsgrConfig.wlm.14.xml') as fh:
|
||||
template = fh.read()
|
||||
with open('config/tabs.json') as fh:
|
||||
tabs_data = json.load(fh)
|
||||
tmpl_before = req.app['jinja_env'].from_string(template)
|
||||
tmpl = tmpl_before.render(tabs=tabs_data, settings=settings)
|
||||
result = tmpl
|
||||
elif body is not None:
|
||||
with open(TMPL_DIR + '/config/MsgrConfig.msn.envelope.xml') as fh:
|
||||
envelope = fh.read()
|
||||
with open(TMPL_DIR + '/config/MsgrConfig.msn.xml') as fh:
|
||||
config = fh.read()
|
||||
with open('config/tabs.json') as fh:
|
||||
with open(TMPL_DIR + '/svcs/svcs_tabs.xml') as th:
|
||||
template = th.read()
|
||||
tabs_data = json.load(fh)
|
||||
tmpl_before = req.app['jinja_env'].from_string(template)
|
||||
tab_tmpl = tmpl_before.render(tabs=tabs_data)
|
||||
result = envelope.format(MsgrConfig = config.format(tabs = tab_tmpl, settings = settings))
|
||||
|
||||
return result or ''
|
||||
|
||||
def _get_msgr_config_16(req: web.Request, body: Optional[bytes]) -> str:
|
||||
with open(TMPL_DIR + '/config/MsgrConfig.wlm.16.xml') as fh:
|
||||
template = fh.read()
|
||||
with open('config/tabs.json') as fh:
|
||||
tabs_data = json.load(fh)
|
||||
tmpl_before = req.app['jinja_env'].from_string(template)
|
||||
tmpl = tmpl_before.render(tabs=tabs_data, settings=settings)
|
||||
result = tmpl
|
||||
|
||||
return result or ''
|
||||
|
||||
PassportURLs = 'PassportURLs'
|
||||
|
||||
async def handle_nexus(req: web.Request) -> web.Response:
|
||||
return web.HTTPOk(headers = {
|
||||
PassportURLs: 'DALogin=https://{}{}'.format(settings.LOGIN_HOST, LOGIN_PATH),
|
||||
})
|
||||
|
||||
async def handle_login(req: web.Request) -> web.Response:
|
||||
tmp = _extract_pp_credentials(req.headers.get('Authorization') or '')
|
||||
if tmp is None:
|
||||
token = None
|
||||
else:
|
||||
email, pwd = tmp
|
||||
token_tpl = _login(req, email, pwd)
|
||||
if token_tpl is None:
|
||||
raise web.HTTPUnauthorized(headers={
|
||||
'WWW-Authenticate': '{}da-status=failed'.format(PP),
|
||||
})
|
||||
token, _, _ = token_tpl
|
||||
return web.HTTPOk(headers={
|
||||
'Authentication-Info': '{}da-status=success,from-PP=\'{}\''.format(PP, token),
|
||||
})
|
||||
|
||||
async def handle_not_rst(req: web.Request) -> web.Response:
|
||||
if req.method == 'OPTIONS':
|
||||
return web.HTTPOk(headers = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'POST',
|
||||
'Access-Control-Allow-Headers': 'X-User, X-Password, Content-Type',
|
||||
'Access-Control-Expose-Headers': 'X-Token',
|
||||
'Access-Control-Max-Age': str(86400),
|
||||
})
|
||||
|
||||
email = req.headers.get('X-User') or ''
|
||||
pwd = req.headers.get('X-Password') or ''
|
||||
token_tpl = _login(req, email, pwd, lifetime = 86400)
|
||||
headers = {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Methods': 'POST',
|
||||
'Access-Control-Expose-Headers': 'X-Token',
|
||||
}
|
||||
if token_tpl is not None:
|
||||
token, _, _ = token_tpl
|
||||
headers['X-Token'] = token
|
||||
return web.HTTPOk(headers = headers)
|
||||
|
||||
async def handle_rst(req: web.Request, rst2: bool = False) -> web.Response:
|
||||
from lxml.objectify import fromstring as parse_xml
|
||||
|
||||
body = await req.read()
|
||||
try:
|
||||
root = parse_xml(body)
|
||||
except:
|
||||
return render(req, 'msn:RST/{}.error.xml'.format('RST2' if rst2 else 'RST'))
|
||||
|
||||
email = find_element(root, 'Username')
|
||||
pwd = str(find_element(root, 'Password'))
|
||||
|
||||
if email is None or pwd is None:
|
||||
return render(req, 'msn:RST/{}.error.xml'.format('RST2' if rst2 else 'RST'))
|
||||
|
||||
backend: Backend = req.app['backend']
|
||||
|
||||
token_tpl = _login(req, email, pwd, binary_secret = True, lifetime = 86400)
|
||||
|
||||
uuid = backend.util_get_uuid_from_email(email)
|
||||
|
||||
if token_tpl is not None and uuid is not None:
|
||||
token, expiry, bsecret = token_tpl
|
||||
day_before_expiry = expiry - timedelta(days = 1)
|
||||
timez = util.misc.date_format(day_before_expiry)
|
||||
tomorrowz = util.misc.date_format(expiry)
|
||||
time_5mz = util.misc.date_format((day_before_expiry + timedelta(minutes = 5)))
|
||||
|
||||
# load PUID and CID
|
||||
cid = cid_format(uuid)
|
||||
puid = puid_format(uuid)
|
||||
|
||||
assert req.transport is not None
|
||||
peername = req.transport.get_extra_info('peername')
|
||||
if peername:
|
||||
host = peername[0]
|
||||
else:
|
||||
host = '127.0.0.1'
|
||||
|
||||
# get list of requested domains
|
||||
domains = root.findall('.//{*}Address')
|
||||
|
||||
tmpl = req.app['jinja_env'].get_template('msn:RST/{}.token.xml'.format('RST2' if rst2 else 'RST'))
|
||||
# collect tokens for requested domains, ignore Passport token request
|
||||
tokenxmls = [tmpl.render(
|
||||
i = i + 1,
|
||||
domain = domain,
|
||||
timez = timez,
|
||||
tomorrowz = tomorrowz,
|
||||
pptoken1 = token,
|
||||
binarysecret = bsecret,
|
||||
) for i, domain in enumerate(domains) if domain != 'http://Passport.NET/tb']
|
||||
|
||||
tmpl = req.app['jinja_env'].get_template('msn:RST/{}.xml'.format('RST2' if rst2 else 'RST'))
|
||||
return web.HTTPOk(
|
||||
content_type = 'text/xml',
|
||||
text = (tmpl.render(
|
||||
puidhex = puid,
|
||||
time_5mz = time_5mz,
|
||||
timez = timez,
|
||||
tomorrowz = tomorrowz,
|
||||
cid = cid,
|
||||
email = email,
|
||||
firstname = "John",
|
||||
lastname = "Doe",
|
||||
ip = req.headers.get('X-Forwarded-For', req.remote),
|
||||
pptoken1 = token,
|
||||
tokenxml = Markup(''.join(tokenxmls)),
|
||||
) if rst2 else tmpl.render(
|
||||
puidhex = puid,
|
||||
timez = timez,
|
||||
tomorrowz = tomorrowz,
|
||||
cid = cid,
|
||||
email = email,
|
||||
firstname = "John",
|
||||
lastname = "Doe",
|
||||
ip = req.headers.get('X-Forwarded-For', req.remote),
|
||||
pptoken1 = token,
|
||||
tokenxml = Markup(''.join(tokenxmls)),
|
||||
)),
|
||||
)
|
||||
|
||||
return render(req, 'msn:RST/{}.authfailed.xml'.format('RST2' if rst2 else 'RST'), {
|
||||
'timez': util.misc.date_format(datetime.utcnow()),
|
||||
})
|
||||
|
||||
def _get_storage_path(uuid: str) -> Path:
|
||||
return Path('storage/dp') / uuid[0:1] / uuid[0:2]
|
||||
|
||||
async def handle_videofeed(req: web.Request, get_videos: bool = False) -> web.Response:
|
||||
if not get_videos:
|
||||
return render(req, 'msn:svcs/videofeedroot.xml')
|
||||
else:
|
||||
with open('config/videos.json', 'rb') as f:
|
||||
vid_data = json.load(f)
|
||||
rss_items = []
|
||||
for video in vid_data:
|
||||
try:
|
||||
pub_date = parsedate_to_datetime(video['publish_date'])
|
||||
except Exception:
|
||||
pub_date = datetime.now()
|
||||
item = PyRSS2Gen.RSSItem(
|
||||
title=video['title'],
|
||||
link=video['link'],
|
||||
description=video['description'],
|
||||
guid=PyRSS2Gen.Guid(video['link'], isPermaLink=True),
|
||||
pubDate=pub_date,
|
||||
enclosure=PyRSS2Gen.Enclosure(
|
||||
url=video['thumbnail'],
|
||||
length="1",
|
||||
type="image/jpeg"
|
||||
)
|
||||
)
|
||||
rss_items.append(item)
|
||||
rss_feed = PyRSS2Gen.RSS2(
|
||||
title="CrossTalk",
|
||||
link="http://crosstalk.im",
|
||||
description="CrossTalk Videos",
|
||||
language="en-us",
|
||||
lastBuildDate=datetime.now(),
|
||||
ttl=10,
|
||||
copyright="© 2023 - 2025 the undergr0und",
|
||||
image=PyRSS2Gen.Image(
|
||||
url="http://hiden.cc/static/icon/misc/hidnet.png",
|
||||
title="CrossTalk Video - InDev",
|
||||
link="http://crosstalk.im"
|
||||
),
|
||||
items=rss_items
|
||||
)
|
||||
|
||||
rss_xml = rss_feed.to_xml(encoding="utf-8")
|
||||
return web.HTTPOk(content_type="text/xml", text=rss_xml)
|
||||
|
||||
def _extract_pp_credentials(auth_str: str) -> Optional[Tuple[str, str]]:
|
||||
if not auth_str:
|
||||
return None
|
||||
assert auth_str.startswith(PP)
|
||||
auth = {}
|
||||
for part in auth_str[len(PP):].split(','):
|
||||
parts = part.split('=', 1)
|
||||
if len(parts) == 2:
|
||||
auth[unquote(parts[0])] = unquote(parts[1])
|
||||
email = auth['sign-in']
|
||||
pwd = auth['pwd']
|
||||
return email, pwd
|
||||
|
||||
def _login(req: web.Request, email: str, pwd: str, binary_secret: bool = False, lifetime: int = 30) -> Optional[Tuple[str, datetime, Optional[str]]]:
|
||||
backend: Backend = req.app['backend']
|
||||
uuid = backend.user_service.login(email, pwd)
|
||||
if uuid is None: return None
|
||||
bsecret = None
|
||||
if binary_secret:
|
||||
bsecret = base64.b64encode(secrets.token_bytes(24)).decode('ascii')
|
||||
return (*backend.login_auth_service.create_token('ns/login', [uuid, bsecret], lifetime = lifetime), bsecret)
|
||||
|
||||
def _contact_is_favorite(user_detail: models.UserDetail, ctc: models.Contact) -> bool:
|
||||
groups = user_detail._groups_by_uuid
|
||||
for group in ctc._groups.copy():
|
||||
if group.id not in groups: continue
|
||||
if groups[group.id].is_favorite: return True
|
||||
return False
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>SOAP-ENV:Server</faultcode>
|
||||
<faultstring>Function '{{action}}' doesn't exist</faultstring>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Generic SOAP fault</faultstring>
|
||||
<notAValidSoapTag>{{ exception }}</notAValidSoapTag>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>API {{ action }} no longer supported</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">Forbidden</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">API {{ action }} no longer supported</errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">DM2CDP1011931</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>API {{ action }} no longer supported</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<S:Header>
|
||||
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<psf:serverVersion>1</psf:serverVersion>
|
||||
<psf:authstate>0x80048800</psf:authstate>
|
||||
<psf:reqstatus>0x80048823</psf:reqstatus>
|
||||
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="{{ timez }}">XYZPPLOGN1A23 2017.09.28.12.44.07</psf:serverInfo>
|
||||
<psf:cookies/>
|
||||
<psf:response/>
|
||||
</psf:pp>
|
||||
</S:Header>
|
||||
<S:Fault>
|
||||
<faultcode>wsse:FailedAuthentication</faultcode>
|
||||
<faultstring>Authentication Failure</faultstring>
|
||||
</S:Fault>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext"
|
||||
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
||||
xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<S:Fault>
|
||||
<faultcode>S:Client</faultcode>
|
||||
<faultstring>Invalid Request</faultstring>
|
||||
</S:Fault>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wssc="http://schemas.xmlsoap.org/ws/2004/04/sc" xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust">
|
||||
<Header>
|
||||
<ps:AuthInfo xmlns:ps="http://schemas.microsoft.com/Passport/SoapServices/PPCRL" Id="PPAuthInfo">
|
||||
<ps:HostingApp>{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}</ps:HostingApp>
|
||||
<ps:BinaryVersion>4</ps:BinaryVersion>
|
||||
<ps:UIVersion>1</ps:UIVersion>
|
||||
<ps:Cookies/>
|
||||
<ps:RequestParams>AQAAAAIAAABsYwQAAAAxMDMx</ps:RequestParams>
|
||||
</ps:AuthInfo>
|
||||
<wsse:Security>
|
||||
<wsse:UsernameToken Id="user">
|
||||
<wsse:Username>bob1@hotmail.com</wsse:Username>
|
||||
<wsse:Password>foopass</wsse:Password>
|
||||
</wsse:UsernameToken>
|
||||
</wsse:Security>
|
||||
</Header>
|
||||
<Body>
|
||||
<ps:RequestMultipleSecurityTokens xmlns:ps="http://schemas.microsoft.com/Passport/SoapServices/PPCRL" Id="RSTS">
|
||||
<wst:RequestSecurityToken Id="RST0">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>http://Passport.NET/tb</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST1">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messengerclear.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="MBI_KEY_OLD"/>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST2">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messenger.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="?id=507"/>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST3">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>contacts.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="MBI"/>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST4">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messengersecure.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="MBI_SSL"/>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST5">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>spaces.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="MBI"/>
|
||||
</wst:RequestSecurityToken>
|
||||
<wst:RequestSecurityToken Id="RST6">
|
||||
<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>
|
||||
<wsp:AppliesTo>
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>storage.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wsse:PolicyReference URI="MBI_SSL"/>
|
||||
</wst:RequestSecurityToken>
|
||||
</ps:RequestMultipleSecurityTokens>
|
||||
</Body>
|
||||
</Envelope>
|
||||
@@ -0,0 +1,198 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<S:Header>
|
||||
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<psf:serverVersion>1</psf:serverVersion>
|
||||
<psf:PUID>0003BFFDB7D5F624</psf:PUID>
|
||||
<psf:configVersion>16.000.26889.00</psf:configVersion>
|
||||
<psf:uiVersion>3.100.2179.0</psf:uiVersion>
|
||||
<psf:mobileConfigVersion>16.000.26208.0</psf:mobileConfigVersion>
|
||||
<psf:authstate>0x48803</psf:authstate>
|
||||
<psf:reqstatus>0x0</psf:reqstatus>
|
||||
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="{{ timez }}">XYZPPLOGN1A23 2017.10.03.19.00.04</psf:serverInfo>
|
||||
<psf:cookies/>
|
||||
<psf:browserCookies>
|
||||
<psf:browserCookie Name="MH" URL="http://www.msn.com">MSFT; path=/; domain=.msn.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.msn.com">; path=/; domain=.msn.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MH" URL="http://www.live.com">MSFT; path=/; domain=.live.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.live.com">; path=/; domain=.live.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
</psf:browserCookies>
|
||||
<psf:credProperties>
|
||||
<psf:credProperty Name="MainBrandID">MSFT</psf:credProperty>
|
||||
<psf:credProperty Name="BrandIDList"></psf:credProperty>
|
||||
<psf:credProperty Name="IsWinLiveUser">true</psf:credProperty>
|
||||
<psf:credProperty Name="CID">{{ cid }}</psf:credProperty>
|
||||
<psf:credProperty Name="AuthMembername">{{ email }}</psf:credProperty>
|
||||
<psf:credProperty Name="Country">US</psf:credProperty>
|
||||
<psf:credProperty Name="Language">1031</psf:credProperty>
|
||||
<psf:credProperty Name="FirstName">{{ firstname }}</psf:credProperty>
|
||||
<psf:credProperty Name="LastName">{{ lastname }}</psf:credProperty>
|
||||
<psf:credProperty Name="ChildFlags">00000001</psf:credProperty>
|
||||
<psf:credProperty Name="Flags">40100643</psf:credProperty>
|
||||
<psf:credProperty Name="FlagsV2">00000000</psf:credProperty>
|
||||
<psf:credProperty Name="IP">{{ ip }}</psf:credProperty>
|
||||
<psf:credProperty Name="FamilyID">0000000000000000</psf:credProperty>
|
||||
<psf:credProperty Name="AssociatedForStrongAuth">0</psf:credProperty>
|
||||
</psf:credProperties>
|
||||
<psf:extProperties>
|
||||
<psf:extProperty Name="ANON" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">A=2AD1B6380CC38C61A2E95994FFFFFFFF&E=1456&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="NAP" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">V=1.9&E=13fc&C=tq1sGI5NyECr4nbob0bsqOGQx85gOAzYs8FuhJP5L22WfJl-67MNNQ&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="LastUsedCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="WebCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="CID">{{ cid }}</psf:extProperty>
|
||||
</psf:extProperties>
|
||||
<psf:response/>
|
||||
</psf:pp>
|
||||
</S:Header>
|
||||
<S:Body>
|
||||
<wst:RequestSecurityTokenResponseCollection xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:legacy</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>http://Passport.NET/tb</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="BinaryDAToken0" Type="http://www.w3.org/2001/04/xmlenc#Element">
|
||||
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
|
||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||
<ds:KeyName>http://Passport.NET/STS</ds:KeyName>
|
||||
</ds:KeyInfo>
|
||||
<CipherData>
|
||||
<CipherValue>Cap26AQZrSyMm2SwwTyJKyqLR9/S+vQWQsaBc5Mv7PwtQDMzup/udOOMMvSu99R284pmiD3IepBXrEMLK5rLrXAf2A6vrP6vYuGA45GCqQdoxusHZcjt9P2B8WyCTVT2cM8jtGqGIfRlU/4WzOLxNrDJwDfOsmilduGAGZfvRPW7/jyXXrnGK7/PWkymX4YDD+ygJfMrPAfvAprvw/HVE6tutKVc9cViTVYy8oHjosQlb8MKn3vKDW1O2ZWQUc47JPl7DkjQaanfNBGe6CL7K1nr6Z/jy7Ay7MjV+KQehmvphSEmCzLrpB4WWn2PdpdTrOcDj+aJfWHeGL4sIPwEKgrKnTQg9QD8CCsm5wew9P/br39OuIfsC6/PFBEHmVThqj0aMxYLRD4K2GoRay6Ab7NftoIP5dnFnclfRxETAoNpTPE2F5Q669QySrdXxBpBSk8GLmdCDMlhiyzSiByrhFQaZRcH8n9i+i289otYuJQ7xPyP19KwT4CRyOiIlh3DSdlBfurMwihQGxN2spU7P4MwckrDKeOyYQhvNm/XWId/oXBqpHbo2yRPiOwL9p1J4AxA4RaJuh77vyhn2lFQaxPDqZd5A8RJjpb2NE2N3UncKLW7GAangdoLbRDMqt51VMZ0la+b/moL61fKvFXinKRHc7PybrG3MWzgXxO/VMKAuXOsB9XnOgl2A524cgiwyg==</CipherValue>
|
||||
</CipherData>
|
||||
</EncryptedData>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport"/>
|
||||
<wsse:Reference URI="#BinaryDAToken0"/>
|
||||
</wst:RequestedTokenReference>
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>tgoPVK67sU36fQKlGLMgWgTXp7oiaQgE</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messengerclear.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact1">t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact1"/>
|
||||
</wst:RequestedTokenReference>
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>Z1OQ3mCLbrkCGvfRX0V8Ly/nSsbmv4La</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messenger.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact2">t={{ pptoken1 }}rjQ2AdbE08y5Wsm6cgyAAE0YhoO69q4VxqEKEavgL8WJ6gWmdATT7Cz2b6mwE1a7BuNl8H5KwR91KGU8H4vz7xCj5oHh4tnbM92jLWqkQ9Gh07jRpmJasADE4WcY8tDB1JPLfYf/1DE/Y1vwR5enhko97EdAODtnAEb7KRm7DKbZrrqJadYuJRMLbsu+meKcA2YAAAh3qRWjdFREsNABe/PbWQmW7mRbXnkPZ1cWp07lrzAQmHm/zR3yTriSigZPtXMTa0AbEsd943NTrZYdo6DNEdC0y+zypbu0gZgTKHTSntAUbtogmUMWHquFitG0P+oKn2ud6z9eLjGk+Hm2w7s8Vf2UkEqidydi+U3O9Q4lqUJtcLcDa2NciXyffkA8sbS+Wpysj+TZpXVy3sae3EpdncnF678X918n2u/JLUDXL8uyg+eGIuDwO0xmBH1LMg15wzTdq++CZpO3mUIpRBMViqsihMLw8l7TMLvOIupsAJtXhqtfaJaMnSAp/LM7CrAdzpNGv51wJYKqIBJ506QAhhe/VWyBnAyAWiMledzIkafn8L6mgIRq50zvKBX4QRHJoJhHhrN6APnZI+zoHRB/NdJbJULwuz9V3X+ou4PZERl1H/VFR/dtTQd1FY2m0JKYlAG5gdUMTgGRcyD/vRK30ZoEUzoLkGXg1YGlzp1aQnxyD92QZ1nCiZjv2iNIqbtiXSLAAtGsN3Ykftaud0WjWo9rKaibgU1WMZOxU0fWJ+Wczo6uqBQWTlXxDipRceX2eSj1bs3SDEyvmZ9XX11Qh408MJ4/7a7AhbKZitkJW5Q0FrnEk+cq4qqQ0H4VAg==&p=AFww</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact2"/>
|
||||
</wst:RequestedTokenReference>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>contacts.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact3">t={{ pptoken1 }}tZi9ugdf902M4Br/7wKAAPMX58N8xadYh1AbLntVYhaPZ95S943IE+sYAAsx3KQdGcdN2ad2oHflAbAmiFHWA8Xy29Y/fr9EZbsqpNRjrs6+hRqGKv6KF0bYtYTd9I7YK3qEH8GdiUsxj/H6B4brK+LZtKz5cqYeTX9TYwSQLGqEBvRr2nvO6lT4SfhdvSxdA2YAAAh9hpKyxIHT3NABKHcV1vw1SoIszOpXEazh4QAC8wsqF7uqsP8fOvUF1CyOsouCiG9pueBqL6yc9w22z+esp+QMWAALJhlHdGfHHGtI5ezq0vwvEoDVbo3AAVWOHnJWV1WswJa+0rQAScWb8Iw5LZ60Gls7P24tux8iQ9gaxsnZ29ELGdJek7xnAYtEtFkL1PjXB0Thgpty2LmdqBzJq2F33ueEpoLFL3JW0dWHzL9p1gOGHGDXgIucMwXJ78DhmFPRQRxcHCj8UujBcfO3cRUme8alB3RrkLC/3HCavxCldGK/SmBCDhnjSUl1gm5CUqPcPPe0Wb975lH4IIrsSzjkXb3T3QnYGX5t00kQQ8p7PJ1UFnbGj4GA3Smg6/qAyZJTaSOAuuHjrvd03MlT1JxDRiKZXZhTXT25KW8+NTjt0oGGkYsVxEv7h8ho6Udtf6ymOIv3PNnlwYMwJp2myqcDToqnC0JhN54BmrdSnQoUNYoIKk4eqWK3V2lLnpMVfTxO0Mszjpaz51UP70VlJLjrSXTHO733/k5z9kwDIAmkGyYZCyiTOURA9OcpdydivkJKll6y5xwgbqnjx9Ce/6I2h+5xmHLex5qmn6EaghbP+MsGeJgq30x0wLQGAg==&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact3"/>
|
||||
</wst:RequestedTokenReference>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>messengersecure.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact4">t={{ pptoken1 }}2oHItBdtfopLtOddVL6AAMdC+gI2waErOBMJCMqZitiSapE6unig1eU9NNgQZOO3QdgIHELplGTchaqH0MtKxPiGdiHNUNvuZuH+fGx1ij2d1ktZDGKi70eDkVg9dbtGECqhNCsFbFynNwVDebPtFNPXtPv1bNZ9J0Dzshoh6qvS2CU1l3PMrDa+Y3P4zeGVA2YAAAgGg5rOAqHhj9gB9rRZmHJ3ivzxKI/hfRcMWQQegC7gaXs8UcSXmF1GqUJ264kfELpQ0UAVkETFj35qgA21ZfM+L+gQV+UbQ1Tfil4sPNGD5vsrZBKecL0ZJ6TAT/NDjcGe54/vUIaPmi3A2L6QBaC8gbGiQQb+054R+0PU/Hkkn887HEnTIhTRtqqAjI5P/pF1mcC82DVnPlGV8TLzMb3or2KaPjkgDs5MjnXbedubO6uN0Egev+9/hacX/21i6ZQwIVZD0szg6Q6grI6jNGDm4ct3JJHux6534kDB/jdskMtOG97hp2Ed+Ks4vmWYJPetdTd/ARmZkjQcT2CLHKcHEbzK3Hf+Muzqotn3D7L8fbCGZH3xtRNqM3A0VyKLTxdEd+/fBXaWZ1u4CFseoPtSLM3Z6dNnYTHJK27OSjlXtzaSQJZxUgNIlOvtPmoYVnOV2PkymjlvDhcYaIQ1qDQe0Kh/zo0ymOlpvMlqcAa+MVS5UM6375qmD0ebOCu/cx1aCBq30zTxOYCOuUlU4OdTtSgGri3y2IZi3Ti+aQB7fT5h7N/wqCkaZZy07tNs+ALFELX2RkF5R16BA5G9g19QnSrUECaRa7o0pwoDrVRR3aSuaNW1nnSf9jL8blEOcHK6MxUC&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact4"/>
|
||||
</wst:RequestedTokenReference>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>spaces.live.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact5">t={{ pptoken1 }}keHxhjSHsGxIm+YQ/BQAAfpdWf+k17Sun3Krcs/4LzzSsq2MgSfhOeEDNIPUfRT9Jxc/EqHh99Rqb4Irvcn2V7N8RkHW6On9gyYoDFWYt1o2YN03YV/NZzVKVbW/pdDxgs+++FELegQCXzs0V1nhH8IIyl5giiPl87OT7GOIe4rrNJ8BKzAAbcuibR8QZft1A9HqnBkdoq76lnmXvMinQTDTD/PRdx91pB+GiSSXWT9X9fQgVK212vNJtuJBJ4AQOwRUhl46F89W/KhGWIMtuVe4y8UlY/tuZv1PDZ6bIczHejXRuddkIPQ9oM9FbOWHcWLtx/uSO4+zhwphucR+dyaydugESasluP5H1GopoRwDZgAACMzE5rF9T18N0AHPV+yFTi0tV4xpUh1q4ZPn22L56LR0yEr/UG6xHBJ0zhIOYbIB6KOTvpwEdcUYO2BY2799B831TmPqF6lkmA3hMK9NGPTmgY625GFe4EZp+BPgV1Th02g+XC4yMMUhgrYB1U95a2h7bt5bTE+6subNzTbgDC71rLtNe2es/b5qcb+/Rpn5jnCbfkrez6AbDOY9JAHfLx/cjfSdnqRVw62HncSWyqFV9S4asjYW5qmCiqByStDnHtUtZmVEWOTC3O2PFl9xvdvtzrMnNQwgfTLf02hwtNIszC8Y12wJEdYmdGuzOVPnRFEyy58HNZFAMw7i2ifU/UKvjVlUZh4PGy8SQZ0ciTTnW0kdCrKiE2jnF7+GztmXtSc5dv6Cx36IfFuhTVX/XnY5MEEn9TOQ608lXLX+AZ9gotel9bGeMQVrUV1tvNBbcnAfbq3B5k4BHIBr7F8tm6ecoTGqGg39x3yaoLUjkCyMY7wtoU6Uc9oJWV5Vu0ZpmPEF4PZEAB9EWKH+4qED50SuEXOgMncu6Eh92lU5kTrACEd/9SSiK2PpV8BHV/xnHr2QEBbho23NsqUaQY+tB/K9PgyPN2p0YPwTiGF9XdbuUtozXCgZnHIMThUC&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact5"/>
|
||||
</wst:RequestedTokenReference>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>storage.msn.com</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact6">t={{ pptoken1 }}Rg6HvEdmXr19KcNgO+7mAAGz0IdAs+sT7TRsKonUJEvPOUrqSyqirOIB6GjVs8PBKT20j5ceFKQeX28m1O6xHODR+vi3zwMUDySaMy1G2rmpccBwpeFJJBBKXdE10b6nAONSLwMD38gMT253/aofIAEm5XxDGzRJkBPHWGTXzEXx/DxNVskTL3YUIwId2Eh44A2YAAAiDtG///iWnZNABjCsiZgVJfU8F3jDylPAvSZHpeXltbIKMUzh5Ja/55AGwfWI4uJZgX4HYu0TYvhlXoxVrHiQY31lYBH0Lof2Nv5/LLCPGziw3tx2wTM3EplJ2SJ2SPNfbVZNX01UNdF+GMsZWI0xglh+lPHaar6i56UFfjjRL+lWX6F7io4QHMIm7wqsP5r28sHsMO9pFp1kIgJBXCqNf5eOrozUjaq7cfA6mnnxw2uj6jDtXuk9xiTBV18gmEHXIw2Wqp2Ca+c4TaadZCup5mTYyi5m02hWdgg3DahiMtEW953gOWyl/+JRYbzQaGQFfbym68qi3j0p4zJ373j9eXlrf4fJUvTYeC5HGjbcrkWnxjhGg0ryUVjDjxKaUO7zhslVnvX6oLxW8fqNiU0H481wu6+OF/gajQp7Ie9ZrVyRpW1KWtXBrVA69gszTdUrWY8clNZ60kgGFw68Pfv1f6gtGo35Oa3U4Wm9nihV81hRtck58WbYCSOzXJVcH6MR0TlUjKGgwaNQpkc+LtSoyRi8oavoIzN1Giz67qXANYtPUHMPEek8K2p57clCiW99Y6M8C/JdBCkLDB4J4aIIBZ7jx/LhVv06P+AoZIJ660v/tRFDu8PDGij8VAg==&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"/>
|
||||
<wsse:Reference URI="#Compact6"/>
|
||||
</wst:RequestedTokenReference>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
</wst:RequestSecurityTokenResponseCollection>
|
||||
</S:Body>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,24 @@
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>{{ domain }}</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact{{ i }}">t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport:compact"></wsse:KeyIdentifier>
|
||||
<wsse:Reference URI="#Compact{{ i }}"></wsse:Reference>
|
||||
</wst:RequestedTokenReference>
|
||||
{% if domain == 'messengerclear.live.com' %}
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>{{ binarysecret }}</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
{% endif %}
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<S:Header>
|
||||
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<psf:serverVersion>1</psf:serverVersion>
|
||||
<psf:PUID>{{ puidhex }}</psf:PUID>
|
||||
<psf:configVersion>16.000.26889.00</psf:configVersion>
|
||||
<psf:uiVersion>3.100.2179.0</psf:uiVersion>
|
||||
<psf:mobileConfigVersion>16.000.26208.0</psf:mobileConfigVersion>
|
||||
<psf:authstate>0x48803</psf:authstate>
|
||||
<psf:reqstatus>0x0</psf:reqstatus>
|
||||
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="{{ timez }}">XYZPPLOGN1A23 2017.10.03.19.00.04</psf:serverInfo>
|
||||
<psf:cookies/>
|
||||
<psf:browserCookies>
|
||||
<psf:browserCookie Name="MH" URL="http://www.msn.com">MSFT; path=/; domain=.msn.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.msn.com">; path=/; domain=.msn.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MH" URL="http://www.live.com">MSFT; path=/; domain=.live.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.live.com">; path=/; domain=.live.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
</psf:browserCookies>
|
||||
<psf:credProperties>
|
||||
<psf:credProperty Name="MainBrandID">MSFT</psf:credProperty>
|
||||
<psf:credProperty Name="BrandIDList"></psf:credProperty>
|
||||
<psf:credProperty Name="IsWinLiveUser">true</psf:credProperty>
|
||||
<psf:credProperty Name="CID">{{ cid }}</psf:credProperty>
|
||||
<psf:credProperty Name="AuthMembername">{{ email }}</psf:credProperty>
|
||||
<psf:credProperty Name="Country">US</psf:credProperty>
|
||||
<psf:credProperty Name="Language">1033</psf:credProperty>
|
||||
<psf:credProperty Name="FirstName">{{ firstname }}</psf:credProperty>
|
||||
<psf:credProperty Name="LastName">{{ lastname }}</psf:credProperty>
|
||||
<psf:credProperty Name="ChildFlags">00000001</psf:credProperty>
|
||||
<psf:credProperty Name="Flags">40100643</psf:credProperty>
|
||||
<psf:credProperty Name="FlagsV2">00000000</psf:credProperty>
|
||||
<psf:credProperty Name="IP">{{ ip }}</psf:credProperty>
|
||||
<psf:credProperty Name="FamilyID">0000000000000000</psf:credProperty>
|
||||
<psf:credProperty Name="AssociatedForStrongAuth">0</psf:credProperty>
|
||||
</psf:credProperties>
|
||||
<psf:extProperties>
|
||||
<psf:extProperty Name="ANON" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">A=2AD1B6380CC38C61A2E95994FFFFFFFF&E=1456&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="NAP" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">V=1.9&E=13fc&C=tq1sGI5NyECr4nbob0bsqOGQx85gOAzYs8FuhJP5L22WfJl-67MNNQ&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="LastUsedCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="WebCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="CID">{{ cid }}</psf:extProperty>
|
||||
</psf:extProperties>
|
||||
<psf:response/>
|
||||
</psf:pp>
|
||||
</S:Header>
|
||||
<S:Body>
|
||||
<wst:RequestSecurityTokenResponseCollection xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:legacy</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>http://Passport.NET/tb</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:LifeTime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:LifeTime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="BinaryDAToken0" Type="http://www.w3.org/2001/04/xmlenc#Element">
|
||||
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"></EncryptionMethod>
|
||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||
<ds:KeyName>http://Passport.NET/STS</ds:KeyName>
|
||||
</ds:KeyInfo>
|
||||
<CipherData>
|
||||
<CipherValue>Cap26AQZrSyMm2SwwTyJKyqLR9/S+vQWQsaBc5Mv7PwtQDMzup/udOOMMvSu99R284pmiD3IepBXrEMLK5rLrXAf2A6vrP6vYuGA45GCqQdoxusHZcjt9P2B8WyCTVT2cM8jtGqGIfRlU/4WzOLxNrDJwDfOsmilduGAGZfvRPW7/jyXXrnGK7/PWkymX4YDD+ygJfMrPAfvAprvw/HVE6tutKVc9cViTVYy8oHjosQlb8MKn3vKDW1O2ZWQUc47JPl7DkjQaanfNBGe6CL7K1nr6Z/jy7Ay7MjV+KQehmvphSEmCzLrpB4WWn2PdpdTrOcDj+aJfWHeGL4sIPwEKgrKnTQg9QD8CCsm5wew9P/br39OuIfsC6/PFBEHmVThqj0aMxYLRD4K2GoRay6Ab7NftoIP5dnFnclfRxETAoNpTPE2F5Q669QySrdXxBpBSk8GLmdCDMlhiyzSiByrhFQaZRcH8n9i+i289otYuJQ7xPyP19KwT4CRyOiIlh3DSdlBfurMwihQGxN2spU7P4MwckrDKeOyYQhvNm/XWId/oXBqpHbo2yRPiOwL9p1J4AxA4RaJuh77vyhn2lFQaxPDqZd5A8RJjpb2NE2N3UncKLW7GAangdoLbRDMqt51VMZ0la+b/moL61fKvFXinKRHc7PybrG3MWzgXxO/VMKAuXOsB9XnOgl2A524cgiwyg==</CipherValue>
|
||||
</CipherData>
|
||||
</EncryptedData>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedTokenReference>
|
||||
<wsse:KeyIdentifier ValueType="urn:passport"></wsse:KeyIdentifier>
|
||||
<wsse:Reference URI="#BinaryDAToken0"></wsse:Reference>
|
||||
</wst:RequestedTokenReference>
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>tgoPVK67sU36fQKlGLMgWgTXp7oiaQgE</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
{{ tokenxml }}
|
||||
</wst:RequestSecurityTokenResponseCollection>
|
||||
</S:Body>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<S:Header>
|
||||
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<psf:serverVersion>1</psf:serverVersion>
|
||||
<psf:authstate>0x80048800</psf:authstate>
|
||||
<psf:reqstatus>0x80048821</psf:reqstatus>
|
||||
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="{{ timez }}" BuildVersion="16.0.28426.6">XYZPPLOGN1A23 2017.09.28.12.44.07</psf:serverInfo>
|
||||
<psf:cookies/>
|
||||
<psf:response/>
|
||||
</psf:pp>
|
||||
</S:Header>
|
||||
<S:Body>
|
||||
<S:Fault>
|
||||
<S:Code>
|
||||
<S:Value>S:Sender</S:Value>
|
||||
<S:Subcode>
|
||||
<S:Value>wst:FailedAuthentication</S:Value>
|
||||
</S:Subcode>
|
||||
</S:Code>
|
||||
<S:Reason>
|
||||
<S:Text xml:lang="en-US">Authentication Failure</S:Text>
|
||||
</S:Reason>
|
||||
<S:Detail>
|
||||
<psf:error>
|
||||
<psf:value>0x80048821</psf:value>
|
||||
<psf:internalerror>
|
||||
<psf:code>0x80041012</psf:code>
|
||||
<psf:text>The entered and stored passwords do not match.
</psf:text>
|
||||
</psf:internalerror>
|
||||
</psf:error>
|
||||
</S:Detail>
|
||||
</S:Fault>
|
||||
</S:Body>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<S:Body>
|
||||
<S:Fault>
|
||||
<S:Code>
|
||||
<S:Value>S:Sender</S:Value>
|
||||
<S:Subcode>
|
||||
<S:Value>wst:InvalidRequest</S:Value>
|
||||
</S:Subcode>
|
||||
</S:Code>
|
||||
<S:Reason>
|
||||
<S:Text xml:lang="en-US">Invalid Request</S:Text>
|
||||
</S:Reason>
|
||||
<S:Detail>
|
||||
<psf:error>
|
||||
<psf:value>0x80048820</psf:value>
|
||||
<psf:internalerror>
|
||||
<psf:code>0x80045c01</psf:code>
|
||||
<psf:text>Invalid STS request.
</psf:text>
|
||||
</psf:internalerror>
|
||||
</psf:error>
|
||||
</S:Detail>
|
||||
</S:Fault>
|
||||
</S:Body>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,30 @@
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:compact</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://www.w3.org/2005/08/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>{{ domain }}</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:Lifetime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:Lifetime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<wsse:BinarySecurityToken Id="Compact{{ i }}">t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</wsse:BinarySecurityToken>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedAttachedReference>
|
||||
<wsse:SecurityTokenReference>
|
||||
<wsse:Reference URI="/DaESnwwMVTTpRTZEoNqUW/Md0k="></wsse:Reference>
|
||||
</wsse:SecurityTokenReference>
|
||||
</wst:RequestedAttachedReference>
|
||||
<wst:RequestedUnattachedReference>
|
||||
<wsse:SecurityTokenReference>
|
||||
<wsse:Reference URI="/DaESnwwMVTTpRTZEoNqUW/Md0k="></wsse:Reference>
|
||||
</wsse:SecurityTokenReference>
|
||||
</wst:RequestedUnattachedReference>
|
||||
{% if domain == 'messengerclear.live.com' %}
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>{{ binarysecret }}</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
{% endif %}
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing">
|
||||
<S:Header>
|
||||
<wsa:Action xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Action" S:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue</wsa:Action>
|
||||
<wsa:To xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="To" S:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
|
||||
<wsse:Security S:mustUnderstand="1">
|
||||
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="TS">
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ time_5mz }}</wsu:Expires>
|
||||
</wsu:Timestamp>
|
||||
</wsse:Security>
|
||||
<psf:pp xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<psf:serverVersion>1</psf:serverVersion>
|
||||
<psf:PUID>{{ puidhex }}</psf:PUID>
|
||||
<psf:configVersion>16.000.26889.00</psf:configVersion>
|
||||
<psf:uiVersion>3.100.2179.0</psf:uiVersion>
|
||||
<psf:mobileConfigVersion>16.000.26208.0</psf:mobileConfigVersion>
|
||||
<psf:appDataVersion>1</psf:appDataVersion>
|
||||
<psf:authstate>0x48803</psf:authstate>
|
||||
<psf:reqstatus>0x0</psf:reqstatus>
|
||||
<psf:serverInfo Path="Live1" RollingUpgradeState="ExclusiveNew" LocVersion="0" ServerTime="{{ timez }}">XYZPPLOGN1A23 2017.09.28.12.44.07</psf:serverInfo>
|
||||
<psf:cookies/>
|
||||
<psf:browserCookies>
|
||||
<psf:browserCookie Name="MH" URL="http://www.msn.com">MSFT; path=/; domain=.msn.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.msn.com">; path=/; domain=.msn.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MH" URL="http://www.live.com">MSFT; path=/; domain=.live.com; expires=Wed, 30-Dec-2037 16:00:00 GMT</psf:browserCookie>
|
||||
<psf:browserCookie Name="MHW" URL="http://www.live.com">; path=/; domain=.live.com; expires=Thu, 30-Oct-1980 16:00:00 GMT</psf:browserCookie>
|
||||
</psf:browserCookies>
|
||||
<psf:credProperties>
|
||||
<psf:credProperty Name="MainBrandID">MSFT</psf:credProperty>
|
||||
<psf:credProperty Name="BrandIDList"></psf:credProperty>
|
||||
<psf:credProperty Name="IsWinLiveUser">true</psf:credProperty>
|
||||
<psf:credProperty Name="CID">{{ cid }}</psf:credProperty>
|
||||
<psf:credProperty Name="AuthMembername">{{ email }}</psf:credProperty>
|
||||
<psf:credProperty Name="Country">US</psf:credProperty>
|
||||
<psf:credProperty Name="Language">1033</psf:credProperty>
|
||||
<psf:credProperty Name="FirstName">{{ firstname }}</psf:credProperty>
|
||||
<psf:credProperty Name="LastName">{{ lastname }}</psf:credProperty>
|
||||
<psf:credProperty Name="ChildFlags">00000001</psf:credProperty>
|
||||
<psf:credProperty Name="Flags">40100643</psf:credProperty>
|
||||
<psf:credProperty Name="FlagsV2">00000000</psf:credProperty>
|
||||
<psf:credProperty Name="IP">{{ ip }}</psf:credProperty>
|
||||
<psf:credProperty Name="AssociatedForStrongAuth">0</psf:credProperty>
|
||||
</psf:credProperties>
|
||||
<psf:extProperties>
|
||||
<psf:extProperty Name="ANON" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">A=B97FB2EE7DB4CE0D0D5B8107FFFFFFFF&E=1542&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="NAP" Expiry="Wed, 30-Dec-2037 16:00:00 GMT" Domains="bing.com;atdmt.com" IgnoreRememberMe="false">V=1.9&E=14e8&C=uT838e-8kV7Jbm-HqQel-ETkvE7QSUGh6ywMjZQ9JJyYtNKxtdfCBw&W=1</psf:extProperty>
|
||||
<psf:extProperty Name="LastUsedCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="WebCredType">1</psf:extProperty>
|
||||
<psf:extProperty Name="CID">{{ cid }}</psf:extProperty>
|
||||
</psf:extProperties>
|
||||
<psf:response/>
|
||||
</psf:pp>
|
||||
</S:Header>
|
||||
<S:Body>
|
||||
<wst:RequestSecurityTokenResponseCollection xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
|
||||
<wst:RequestSecurityTokenResponse>
|
||||
<wst:TokenType>urn:passport:legacy</wst:TokenType>
|
||||
<wsp:AppliesTo xmlns:wsa="http://www.w3.org/2005/08/addressing">
|
||||
<wsa:EndpointReference>
|
||||
<wsa:Address>http://Passport.NET/tb</wsa:Address>
|
||||
</wsa:EndpointReference>
|
||||
</wsp:AppliesTo>
|
||||
<wst:Lifetime>
|
||||
<wsu:Created>{{ timez }}</wsu:Created>
|
||||
<wsu:Expires>{{ tomorrowz }}</wsu:Expires>
|
||||
</wst:Lifetime>
|
||||
<wst:RequestedSecurityToken>
|
||||
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="BinaryDAToken0" Type="http://www.w3.org/2001/04/xmlenc#Element">
|
||||
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"></EncryptionMethod>
|
||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||
<ds:KeyName>http://Passport.NET/STS</ds:KeyName>
|
||||
</ds:KeyInfo>
|
||||
<CipherData>
|
||||
<CipherValue>Cap26AQZrSyMm2SwwTyJKyqLR9/S+vQWQsaBc5Mv7PwtQDMzup/udOOMMvSu99R284pmiD3IepBXrEMLK5rLrXAf2A6vrP6vYuGA45GCqQdoxusHZcjt9P2B8WyCTVT2cM8jtGqGIfRlU/4WzOLxNrDJwDfOsmilduGAGZfvRPW7/jyXXrnGK7/PWkymX4YDD+ygJfMrPAfvAprvw/HVE6tutKVc9cViTVYy8oHjosQlb8MKn3vKDW1O2ZWQUc47JPl7DkjQaanfNBGe6CL7K1nr6Z/jy7Ay7MjV+KQehmvphSEmCzLrpB4WWn2PdpdTrOcDj+aJfWHeGL4sIPwEKgrKnTQg9QD8CCsm5wew9P/br39OuIfsC6/PFBEHmVThqj0aMxYLRD4K2GoRay6Ab7NftoIP5dnFnclfRxETAoNpTPE2F5Q669QySrdXxBpBSk8GLmdCDMlhiyzSiByrhFQaZRcH8n9i+i289otYuJQ7xPyP19KwT4CRyOiIlh3DSdlBfurMwihQGxN2spU7P4MwckrDKeOyYQhvNm/XWId/oXBqpHbo2yRPiOwL9p1J4AxA4RaJuh77vyhn2lFQaxPDqZd5A8RJjpb2NE2N3UncKLW7GAangdoLbRDMqt51VMZ0la+b/moL61fKvFXinKRHc7PybrG3MWzgXxO/VMKAuXOsB9XnOgl2A524cgiwyg==</CipherValue>
|
||||
</CipherData>
|
||||
</EncryptedData>
|
||||
</wst:RequestedSecurityToken>
|
||||
<wst:RequestedAttachedReference>
|
||||
<wsse:SecurityTokenReference>
|
||||
<wsse:Reference URI="2jmj7l5rSw0yVb/vlWAYkK/YBwk="></wsse:Reference>
|
||||
</wsse:SecurityTokenReference>
|
||||
</wst:RequestedAttachedReference>
|
||||
<wst:RequestedUnattachedReference>
|
||||
<wsse:SecurityTokenReference>
|
||||
<wsse:Reference URI="2jmj7l5rSw0yVb/vlWAYkK/YBwk="></wsse:Reference>
|
||||
</wsse:SecurityTokenReference>
|
||||
</wst:RequestedUnattachedReference>
|
||||
<wst:RequestedProofToken>
|
||||
<wst:BinarySecret>tgoPVK67sU36fQKlGLMgWgTXp7oiaQgE</wst:BinarySecret>
|
||||
</wst:RequestedProofToken>
|
||||
</wst:RequestSecurityTokenResponse>
|
||||
{{ tokenxml }}
|
||||
</wst:RequestSecurityTokenResponseCollection>
|
||||
</S:Body>
|
||||
</S:Envelope>
|
||||
@@ -0,0 +1,242 @@
|
||||
{% macro contact_entry(ab_id, ctc, detail, now) %}
|
||||
<contactId>{{ ctc.head.uuid }}</contactId>
|
||||
<contactInfo>
|
||||
{% if ctc.detail.personal_email or ctc.detail.work_phone or ctc.detail.im_email or ctc.detail.other_email %}
|
||||
<emails>
|
||||
{% if ctc.detail.work_email %}
|
||||
{{ email_entry('ContactEmailBusiness', ctc.detail.work_email) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.im_email %}
|
||||
{{ email_entry('ContactEmailMessenger', ctc.detail.im_email) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.other_email %}
|
||||
{{ email_entry('ContactEmailOther', ctc.detail.other_email) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.personal_email %}
|
||||
{{ email_entry('ContactEmailPersonal', ctc.detail.personal_email) }}
|
||||
{% endif %}
|
||||
</emails>
|
||||
{% endif %}
|
||||
{% if ctc.detail.home_phone or ctc.detail.work_phone or ctc.detail.fax_phone or ctc.detail.pager_phone or ctc.detail.mobile_phone or ctc.detail.other_phone %}
|
||||
<phones>
|
||||
{% if ctc.detail.work_phone %}
|
||||
{{ phone_entry('ContactPhoneBusiness', contact.work_phone) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.fax_phone %}
|
||||
{{ phone_entry('ContactPhoneFax', ctc.detail.fax_phone) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.pager_phone %}
|
||||
{{ phone_entry('ContactPhonePager', ctc.detail.pager_phone) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.mobile_phone %}
|
||||
{{ phone_entry('ContactPhoneMobile', ctc.detail.mobile_phone) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.other_phone %}
|
||||
{{ phone_entry('ContactPhoneOther', ctc.detail.other_phone) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.home_phone %}
|
||||
{{ phone_entry('ContactPhonePersonal', ctc.detail.home_phone) }}
|
||||
{% endif %}
|
||||
</phones>
|
||||
{% endif %}
|
||||
{% if ctc.detail.locations %}
|
||||
<locations>
|
||||
{% for location in ctc.detail.locations.values() %}
|
||||
{% if location.street or location.city or location.state or location.country or location.zip_code %}
|
||||
<ContactLocation>
|
||||
<contactLocationType>{{ location.type }}</contactLocationType>
|
||||
{% if location.street %}
|
||||
<street>{{ location.street }}</street>
|
||||
{% endif %}
|
||||
{% if location.city %}
|
||||
<city>{{ location.city }}</city>
|
||||
{% endif %}
|
||||
{% if location.state %}
|
||||
<state>{{ location.state }}</state>
|
||||
{% endif %}
|
||||
{% if location.country %}
|
||||
<country>{{ location.country }}</country>
|
||||
{% endif %}
|
||||
{% if location.zip_code %}
|
||||
<postalCode>{{ location.zip_code }}</postalCode>
|
||||
{% endif %}
|
||||
</ContactLocation>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</locations>
|
||||
{% endif %}
|
||||
{% if ctc.detail.personal_website or ctc.detail.business_website %}
|
||||
<webSites>
|
||||
{% if ctc.detail.business_website %}
|
||||
{{ website_entry('ContactWebSiteBusiness', ctc.detail.business_website) }}
|
||||
{% endif %}
|
||||
{% if ctc.detail.personal_website %}
|
||||
{{ website_entry('ContactWebSitePersonal', ctc.detail.personal_website) }}
|
||||
{% endif %}
|
||||
</webSites>
|
||||
{% endif %}
|
||||
{% if ctc.detail.nickname %}
|
||||
<annotations>
|
||||
{{ annotation('AB.NickName', ctc.detail.nickname) }}
|
||||
</annotations>
|
||||
{% endif %}
|
||||
<contactType>Regular</contactType>
|
||||
<quickName>{{ ctc.status.name }}</quickName>
|
||||
{% if ctc.detail.first_name %}
|
||||
<firstName>{{ ctc.detail.first_name }}</firstName>
|
||||
{% endif %}
|
||||
{% if ctc.detail.middle_name %}
|
||||
<MiddleName>{{ ctc.detail.middle_name }}</MiddleName>
|
||||
{% endif %}
|
||||
{% if ctc.detail.last_name %}
|
||||
<lastName>{{ ctc.detail.last_name }}</lastName>
|
||||
{% endif %}
|
||||
<passportName>{{ ctc.head.email }}</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{{ ctc.status.name }}</displayName>
|
||||
<puid>{{ puid_format(ctc.head.uuid) }}</puid>
|
||||
{% if ctc._groups %}
|
||||
<groupIds>
|
||||
{% for group in ctc._groups.copy() %}
|
||||
<guid>{{ group.uuid }}</guid>
|
||||
{% endfor %}
|
||||
</groupIds>
|
||||
{% endif %}
|
||||
<CID>{{ cid_format(ctc.head.uuid, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>{{ bool_to_str(ctc.is_messenger_user) }}</isMessengerUser>
|
||||
<isFavorite>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}{{ bool_to_str(contact_is_favorite(detail, ctc)) }}{% else %}false{% endif %}</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>{% if ctc.detail.birthdate %}{{ date_format(ctc.detail.birthdate) }}{% else %}0001-01-01T00:00:00{% endif %}</birthdate>
|
||||
{% if ctc.detail.anniversary %}
|
||||
<Anniversary>{{ ctc.detail.anniversary.strftime('%Y/%m/%d') }}</Anniversary>
|
||||
{% endif %}
|
||||
{% if ctc.detail.notes %}
|
||||
<comment>{{ ctc.detail.notes }}</comment>
|
||||
{% endif %}
|
||||
<primaryEmailType>{% if ctc.detail.primary_email_type %}{{ ctc.detail.primary_email_type }}{% else %}ContactEmailPersonal{% endif %}</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro phone_entry(type, phone) %}
|
||||
<ContactPhone>
|
||||
<contactPhoneType>{{ type }}</contactPhoneType>
|
||||
<number>{{ phone }}</number>
|
||||
<isMessengerEnabled>false</isMessengerEnabled>
|
||||
</ContactPhone>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro email_entry(type, email) %}
|
||||
<ContactEmail>
|
||||
<contactEmailType>{{ type }}</contactEmailType>
|
||||
<email>{{ email }}</email>
|
||||
<isMessengerEnabled>false</isMessengerEnabled>
|
||||
<Capability>0</Capability>
|
||||
<MessengerEnabledExternally>false</MessengerEnabledExternally>
|
||||
</ContactEmail>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro website_entry(type, url) %}
|
||||
<ContactWebSite>
|
||||
<contactWebSiteType>{{ type }}</contactWebSiteType>
|
||||
<webURL>{{ url }}</webURL>
|
||||
</ContactWebSite>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro annotation(name, value) %}
|
||||
<Annotation>
|
||||
<Name>{{ name }}</Name>
|
||||
<Value>{{ value }}</Value>
|
||||
</Annotation>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro generate_me_entry(user, now) %}
|
||||
<Contact>
|
||||
<contactId>{{ user.uuid }}</contactId>
|
||||
<contactInfo>
|
||||
<annotations>
|
||||
<Annotation>
|
||||
<Name>MSN.IM.MBEA</Name>
|
||||
<Value>0</Value>
|
||||
</Annotation>
|
||||
<Annotation>
|
||||
<Name>MSN.IM.GTC</Name>
|
||||
<Value>{% if user.settings.get('GTC') == 'A' %}1{% elif user.settings.get('GTC') == 'N' %}2{% else %}0{% endif %}</Value>
|
||||
</Annotation>
|
||||
<Annotation>
|
||||
<Name>MSN.IM.BLP</Name>
|
||||
<Value>{% if user.settings.get('BLP') == 'AL' %}1{% elif user.settings.get('BLP') == 'BL' %}2{% else %}0{% endif %}</Value>
|
||||
</Annotation>
|
||||
{% if user.settings.get('MPOP') %}
|
||||
<Annotation>
|
||||
<Name>MSN.IM.MPOP</Name>
|
||||
<Value>{{ user.settings.get('MPOP') }}</Value>
|
||||
</Annotation>
|
||||
{% endif %}
|
||||
{% if user.settings.get('RLP') %}
|
||||
<Annotation>
|
||||
<Name>MSN.IM.RoamLiveProperties</Name>
|
||||
<Value>{{ user.settings.get('RLP') }}</Value>
|
||||
</Annotation>
|
||||
{% endif %}
|
||||
</annotations>
|
||||
<contactType>Me</contactType>
|
||||
<quickName>{{ user.status.name }}</quickName>
|
||||
<passportName>{{ user.email }}</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{{ user.status.name }}</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format(user.uuid, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
</Contact>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro group_entry(group, now) %}
|
||||
<Group>
|
||||
<groupId>{{ group.uuid }}</groupId>
|
||||
<groupInfo>
|
||||
<annotations>
|
||||
<Annotation>
|
||||
<Name>MSN.IM.Display</Name>
|
||||
<Value>1</Value>
|
||||
</Annotation>
|
||||
</annotations>
|
||||
<groupType>c8529ce2-6ead-434d-881f-341e17db3ff8</groupType>
|
||||
<name>{{ group.name }}</name>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<IsFavorite>{{ bool_to_str(group.is_favorite) }}</IsFavorite>
|
||||
</groupInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
</Group>
|
||||
{% endmacro %}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABContactAddResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ABContactAddResult>
|
||||
<guid>{{ contact_uuid }}</guid>
|
||||
</ABContactAddResult>
|
||||
</ABContactAddResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABContactDeleteResponse xmlns="http://www.msn.com/webservices/AddressBook"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABContactUpdateResponse xmlns="http://www.msn.com/webservices/AddressBook" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,54 @@
|
||||
{% from 'msn:_funcs.xml' import contact_entry, group_entry, generate_me_entry, ab_properties %}
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABFindAllResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ABFindAllResult>
|
||||
<groups>
|
||||
{% for group in detail._groups_by_uuid.values() %}
|
||||
{{ group_entry(group, now) }}
|
||||
{% endfor %}
|
||||
</groups>
|
||||
<contacts>
|
||||
{% for ctc in detail.contacts.values() %}
|
||||
{% if ctc.lists.__and__(ContactList.FL) %}
|
||||
<Contact>
|
||||
{{ contact_entry(ab_id, ctc, detail, now) }}
|
||||
</Contact>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ generate_me_entry(user, now) }}
|
||||
</contacts>
|
||||
<ab>
|
||||
<abId>{{ ab_id }}</abId>
|
||||
<abInfo>
|
||||
<ownerPuid>0</ownerPuid>
|
||||
<OwnerCID>{{ cid_format(user.uuid, decimal = True) }}</OwnerCID>
|
||||
<ownerEmail>{{ user.email }}</ownerEmail>
|
||||
<fDefault>true</fDefault>
|
||||
<joinedNamespace>false</joinedNamespace>
|
||||
<IsBot>false</IsBot>
|
||||
<IsParentManaged>false</IsParentManaged>
|
||||
<SubscribeExternalPartner>false</SubscribeExternalPartner>
|
||||
<NotifyExternalPartner>false</NotifyExternalPartner>
|
||||
<AddressBookType>Individual</AddressBookType>
|
||||
</abInfo>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<DynamicItemLastChanged>0001-01-01T00:00:00</DynamicItemLastChanged>
|
||||
<createDate>{{ date_format(user.date_created) }}</createDate>
|
||||
<propertiesChanged />
|
||||
</ab>
|
||||
</ABFindAllResult>
|
||||
</ABFindAllResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,270 @@
|
||||
{% from 'msn:_funcs.xml' import contact_entry, group_entry, generate_me_entry, ab_properties %}
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABFindContactsPagedResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ABFindContactsPagedResult>
|
||||
{% if ab_id == '00000000-0000-0000-0000-000000000000' %}
|
||||
<Groups>
|
||||
{% for group in detail._groups_by_uuid.values() %}
|
||||
{{ group_entry(group, now) }}
|
||||
{% endfor %}
|
||||
</Groups>
|
||||
{% endif %}
|
||||
<Contacts>
|
||||
{% if ab_id == '00000000-0000-0000-0000-000000000000' %}
|
||||
{% for ctc in detail.contacts.values() %}
|
||||
{% if ctc.lists.__and__(ContactList.FL) %}
|
||||
<Contact>
|
||||
{{ contact_entry(ab_id, ctc, detail, now) }}
|
||||
</Contact>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% for circle in circles %}
|
||||
<Contact>
|
||||
<contactId>00000000-0000-0000-0009-{{ circle.chat_id }}</contactId>
|
||||
<contactInfo>
|
||||
<contactType>Circle</contactType>
|
||||
<quickName>circle</quickName>
|
||||
<passportName>00000000-0000-0000-0009-{{ circle.chat_id.upper() }}@hotmail.com</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{% if circle.memberships[user.uuid].role == CircleRole.Admin %}{{ circle.name }}{% else %}00000000-0000-0000-0009-{{ circle.chat_id.upper() }}@hotmail.com{% endif %}</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format('00000000-0000-0000-0009-' + circle.chat_id, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<IsHidden>true</IsHidden>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
<NetworkInfoList>
|
||||
<NetworkInfo>
|
||||
<DomainId>1</DomainId>
|
||||
<SourceId>WL</SourceId>
|
||||
{% if circle.memberships[user.uuid].role != CircleRole.Admin %}
|
||||
<DomainTag>00000000-0000-0000-0009-{{ circle.chat_id.upper() }}</DomainTag>
|
||||
<DisplayName>00000000-0000-0000-0009-{{ circle.chat_id.upper() }}</DisplayName>
|
||||
{% endif %}
|
||||
<RelationshipType>5</RelationshipType>
|
||||
<RelationshipState>{{ circle.memberships[user.uuid].state.value }}</RelationshipState>
|
||||
<RelationshipStateDate>{{ now }}</RelationshipStateDate>
|
||||
<RelationshipRole>{% if circle.memberships[user.uuid].role == CircleRole.StatePendingOutbound %}4{% else %}0{% endif %}</RelationshipRole>
|
||||
<NDRCount>0</NDRCount>
|
||||
{% if circle.memberships[user.uuid].invite_message %}
|
||||
<InviterMessage>{{ circle.memberships[user.uuid].invite_message }}</InviterMessage>
|
||||
{% endif %}
|
||||
<InviterCID>{% if user.uuid == circle.owner_uuid %}0{% else %}{{ cid_format(circle.memberships[user.uuid].inviter_uuid, decimal = True) }}{% endif %}</InviterCID>
|
||||
{% if circle.memberships[user.uuid].inviter_name %}
|
||||
<InviterName>{{ circle.memberships[user.uuid].inviter_name }}</InviterName>
|
||||
{% endif %}
|
||||
{% if circle.memberships[user.uuid].inviter_email %}
|
||||
<InviterEmail>{{ circle.memberships[user.uuid].inviter_email }}</InviterEmail>
|
||||
{% endif %}
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<LastUpdated>{{ now }}</LastUpdated>
|
||||
<PropertiesChanged />
|
||||
</NetworkInfo>
|
||||
</NetworkInfoList>
|
||||
<IsAutoUpdateDisabled>false</IsAutoUpdateDisabled>
|
||||
<IsShellContact>false</IsShellContact>
|
||||
<TrustLevel>0</TrustLevel>
|
||||
<PropertiesChanged />
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<CreatedBy>96</CreatedBy>
|
||||
</Contact>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% for membership in circle.memberships.values() %}
|
||||
<Contact>
|
||||
<contactId>{{ membership.head.uuid }}</contactId>
|
||||
<contactInfo>
|
||||
<contactType>{% if membership.state == CircleState.WaitingResponse or membership.state == CircleState.Rejected or (membership.role == CircleRole.Empty and membership.state == CircleState.Empty) %}LivePending{% else %}Live{% endif %}</contactType>
|
||||
<quickName>{{ membership.head.email }}</quickName>
|
||||
<passportName>{{ membership.head.email }}</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{{ membership.head.email }}</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format(membership.head.uuid, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<IsHidden>false</IsHidden>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
{% if not (membership.role == CircleRole.Empty or membership.state == CircleState.Empty) %}
|
||||
<NetworkInfoList>
|
||||
<NetworkInfo>
|
||||
<DomainId>1</DomainId>
|
||||
<SourceId>WL</SourceId>
|
||||
<RelationshipType>5</RelationshipType>
|
||||
<RelationshipState>{% if membership.state == CircleState.WaitingResponse %}2{% else %}{{ membership.state.value }}{% endif %}</RelationshipState>
|
||||
<RelationshipStateDate>{{ now }}</RelationshipStateDate>
|
||||
<RelationshipRole>{% if membership.role == CircleRole.StatePendingOutbound %}3{% else %}{{ membership.role.value }}{% endif %}</RelationshipRole>
|
||||
<NDRCount>0</NDRCount>
|
||||
{% if membership.invite_message %}
|
||||
<InviterMessage>{{ membership.invite_message }}</InviterMessage>
|
||||
{% endif %}
|
||||
<InviterCID>{% if membership.head.uuid == circle.owner_uuid %}0{% else %}{{ cid_format(membership.inviter_uuid, decimal = True) }}{% endif %}</InviterCID>
|
||||
{% if membership.inviter_name %}
|
||||
<InviterName>{{ membership.inviter_name }}</InviterName>
|
||||
{% endif %}
|
||||
{% if membership.inviter_email %}
|
||||
<InviterEmail>{{ membership.inviter_email }}</InviterEmail>
|
||||
{% endif %}
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<LastUpdated>{{ now }}</LastUpdated>
|
||||
<PropertiesChanged />
|
||||
</NetworkInfo>
|
||||
</NetworkInfoList>
|
||||
{% endif %}
|
||||
<IsAutoUpdateDisabled>false</IsAutoUpdateDisabled>
|
||||
<IsShellContact>false</IsShellContact>
|
||||
<TrustLevel>0</TrustLevel>
|
||||
<PropertiesChanged />
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>{% if membership.state == CircleState.Rejected or (membership.state == CircleState.Empty and not membership.role == CircleRole.Empty) %}true{% else %}false{% endif %}</fDeleted>
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<CreatedBy>96</CreatedBy>
|
||||
</Contact>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if ab_id.startswith('00000000-0000-0000-0009-') %}
|
||||
<Contact>
|
||||
<contactId>{{ ab_id }}</contactId>
|
||||
<contactInfo>
|
||||
<contactType>Me</contactType>
|
||||
<quickName>{{ ab_id }}</quickName>
|
||||
<passportName>{{ ab_id }}@live.com</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{{ ab_id }}@live.com</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format(ab_id, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
</Contact>
|
||||
{% else %}
|
||||
{{ generate_me_entry(user, now) }}
|
||||
{% endif %}
|
||||
</Contacts>
|
||||
{% if ab_id == '00000000-0000-0000-0000-000000000000' %}
|
||||
<CircleResult>
|
||||
{% if circles %}
|
||||
<Circles>
|
||||
{% for circle in circles %}
|
||||
{% if circle.memberships[user.uuid].state == CircleState.Accepted or circle.memberships[user.uuid].state == CircleState.WaitingResponse %}
|
||||
<CircleInverseInfo>
|
||||
<Content>
|
||||
<Handle>
|
||||
<Id>00000000-0000-0000-0009-{{ circle.chat_id }}</Id>
|
||||
</Handle>
|
||||
<Info>
|
||||
<Domain>1</Domain>
|
||||
<HostedDomain>live.com</HostedDomain>
|
||||
<Type>2</Type>
|
||||
<MembershipAccess>{{ circle.membership_access }}</MembershipAccess>
|
||||
<IsPresenceEnabled>true</IsPresenceEnabled>
|
||||
<RequestMembershipOption>{{ circle.request_membership_option }}</RequestMembershipOption>
|
||||
<DisplayName>{{ circle.name }}</DisplayName>
|
||||
<ProfileLastUpdated>0001-01-01T00:00:00</ProfileLastUpdated>
|
||||
<Changes />
|
||||
<CreateDate>0001-01-01T00:00:00</CreateDate>
|
||||
<LastUpdated>{{ now }}</LastUpdated>
|
||||
</Info>
|
||||
</Content>
|
||||
<PersonalInfo>
|
||||
<MembershipInfo>
|
||||
<CirclePersonalMembership>
|
||||
<Role>{{ circle.memberships[user.uuid].role.name }}</Role>
|
||||
<State>{{ circle.memberships[user.uuid].state.name }}</State>
|
||||
</CirclePersonalMembership>
|
||||
</MembershipInfo>
|
||||
<Name>{{ circle.name }}</Name>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<IsFavorite>false</IsFavorite>
|
||||
<IsFamily>false</IsFamily>
|
||||
<Changes />
|
||||
</PersonalInfo>
|
||||
<Deleted>false</Deleted>
|
||||
</CircleInverseInfo>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</Circles>
|
||||
{% endif %}
|
||||
<CircleTicket>{{ signedticket }}</CircleTicket>
|
||||
</CircleResult>
|
||||
{% endif %}
|
||||
<Ab>
|
||||
<abId>{{ ab_id }}</abId>
|
||||
<abInfo>
|
||||
<ownerPuid>0</ownerPuid>
|
||||
<OwnerCID>{% if ab_id.startswith('00000000-0000-0000-0009-') %}{{ cid_format(ab_id, decimal = True) }}{% else %}{{ cid_format(user.uuid, decimal = True) }}{% endif %}</OwnerCID>
|
||||
<ownerEmail>{% if ab_id.startswith('00000000-0000-0000-0009-') %}{{ ab_id }}@live.com{% else %}{{ user.email }}{% endif %}</ownerEmail>
|
||||
<fDefault>true</fDefault>
|
||||
<joinedNamespace>false</joinedNamespace>
|
||||
<IsBot>false</IsBot>
|
||||
<IsParentManaged>false</IsParentManaged>
|
||||
<AccountTierLastChanged>0001-01-01T00:00:00</AccountTierLastChanged>
|
||||
<ProfileVersion>0</ProfileVersion>
|
||||
<SubscribeExternalPartner>false</SubscribeExternalPartner>
|
||||
<NotifyExternalPartner>false</NotifyExternalPartner>
|
||||
<AddressBookType>{{ ab_type }}</AddressBookType>
|
||||
</abInfo>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<DynamicItemLastChanged>0001-01-01T00:00:00</DynamicItemLastChanged>
|
||||
<createDate>{{ date_format(user.date_created) }}</createDate>
|
||||
<propertiesChanged />
|
||||
</Ab>
|
||||
</ABFindContactsPagedResult>
|
||||
</ABFindContactsPagedResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABGroupAddResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ABGroupAddResult>
|
||||
<guid>{{ group_id }}</guid>
|
||||
</ABGroupAddResult>
|
||||
</ABGroupAddResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABGroupContactAddResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ABGroupContactAddResult>
|
||||
<guid>{{ contact_uuid }}</guid>
|
||||
</ABGroupContactAddResult>
|
||||
</ABGroupContactAddResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABGroupContactDeleteResponse xmlns="http://www.msn.com/webservices/AddressBook"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABGroupDeleteResponse xmlns="http://www.msn.com/webservices/AddressBook"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ABGroupUpdateResponse xmlns="http://www.msn.com/webservices/AddressBook"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<BreakConnectionResponse xmlns="http://www.msn.com/webservices/AddressBook"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<CreateContactResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<CreateContactResult>
|
||||
<contactId>{{ head.uuid }}</contactId>
|
||||
<contactInfo>
|
||||
<contactType>LivePending</contactType>
|
||||
<quickName>{{ head.email }}</quickName>
|
||||
<passportName>{{ head.email }}</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{{ head.email }}</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format(head.uuid, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<IsHidden>false</IsHidden>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
<IsAutoUpdateDisabled>false</IsAutoUpdateDisabled>
|
||||
<IsShellContact>false</IsShellContact>
|
||||
<TrustLevel>0</TrustLevel>
|
||||
<PropertiesChanged />
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<CreatedBy>96</CreatedBy>
|
||||
</CreateContactResult>
|
||||
</CreateContactResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Can Not Add Yourself </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">CanNotAddYourself</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Can Not Add Yourself </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB133</machineName>
|
||||
<additionalDetails>
|
||||
<conflictObjectId>79ACA834-005D-4812-8749-DC976F38BC5D</conflictObjectId>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Contact Already Exists </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">ContactAlreadyExists</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Contact Already Exists </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB133</machineName>
|
||||
<additionalDetails>
|
||||
<conflictObjectId>79ACA834-005D-4812-8749-DC976F38BC5D</conflictObjectId>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Contact Does Not Exist </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">ContactDoesNotExist</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Contact Does Not Exist </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB133</machineName>
|
||||
<additionalDetails>
|
||||
<conflictObjectId>79ACA834-005D-4812-8749-DC976F38BC5D</conflictObjectId>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Malformed email Argument Email missing '@' character</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/ABContactAdd</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">BadEmailArgument</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Malformed email Argument Email missing '@' character</errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB136</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>Malformed email Argument Email missing '@' character</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Malformed email Argument Email missing '.' character</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/ABContactAdd</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">BadEmailArgument</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Malformed email Argument Email missing '.' character</errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB137</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>Malformed email Argument Email missing '.' character</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Full sync required. Details: Delta syncs disabled.</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ faultactor }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">FullSyncRequired</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Full sync required. Details: Delta syncs disabled.</errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">DM2CDP1012622</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>Full sync required. Details: Delta syncs disabled.</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Group Already Exists </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">GroupAlreadyExists</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Group Already Exists </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB131</machineName>
|
||||
<additionalDetails>
|
||||
<conflictObjectId>A4D21A8C-AD06-435F-8AB0-64D8B663FB91</conflictObjectId>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Argument Exceeded Allowed Length GroupName exceeded length</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">BadArgumentLength</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Argument Exceeded Allowed Length GroupName exceeded length</errorstring>
|
||||
<parameterFault xmlns="http://www.msn.com/webservices/AddressBook">GroupName</parameterFault>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB143</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>Argument Exceeded Allowed Length GroupName exceeded length</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>The Passport user specified is invalid SignInName: {{ email }}</faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/{{ action_str }}</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">InvalidPassportUser</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">The Passport user specified is invalid SignInName: {{ email }}</errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BAYABCHWBB137</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>The Passport user specified is invalid SignInName: {{ email }}</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<ManageWLConnectionResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<ManageWLConnectionResult>
|
||||
{% if error %}
|
||||
<clientErrorData>
|
||||
{{ error }}
|
||||
</clientErrorData>
|
||||
{% endif %}
|
||||
{% if not error %}
|
||||
<clientErrorData />
|
||||
<contactId>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}00000000-0000-0000-0009-{{ circle.chat_id }}{% else %}{{ head.uuid }}{% endif %}</contactId>
|
||||
<contactInfo>
|
||||
<contactType>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}Circle{% else %}{% if circle.memberships[head.uuid].state == CircleState.WaitingResponse or circle.memberships[head.uuid].state == CircleState.Rejected or (circle.memberships[head.uuid].role == CircleRole.Empty or circle.memberships[head.uuid].state == CircleState.Empty) %}LivePending{% else %}Live{% endif %}{% endif %}</contactType>
|
||||
<quickName>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}circle{% else %}{{ head.email }}{% endif %}</quickName>
|
||||
<passportName>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}00000000-0000-0000-0009-{{ circle.chat_id.upper() }}@hotmail.com{% else %}{{ head.email }}{% endif %}</passportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<displayName>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}{{ circle.name }}{% else %}{{ head.email }}{% endif %}</displayName>
|
||||
<puid>{{ puid_format(user.uuid) }}</puid>
|
||||
<CID>{{ cid_format('00000000-0000-0000-0009-' + circle.chat_id, decimal = True) }}</CID>
|
||||
<IsNotMobileVisible>false</IsNotMobileVisible>
|
||||
<isMobileIMEnabled>false</isMobileIMEnabled>
|
||||
<isMessengerUser>false</isMessengerUser>
|
||||
<isFavorite>false</isFavorite>
|
||||
<isSmtp>false</isSmtp>
|
||||
<hasSpace>false</hasSpace>
|
||||
<spotWatchState>NoDevice</spotWatchState>
|
||||
<birthdate>0001-01-01T00:00:00</birthdate>
|
||||
<primaryEmailType>ContactEmailPersonal</primaryEmailType>
|
||||
<PrimaryLocation>ContactLocationPersonal</PrimaryLocation>
|
||||
<PrimaryPhone>ContactPhonePersonal</PrimaryPhone>
|
||||
<IsPrivate>false</IsPrivate>
|
||||
<IsHidden>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}true{% else %}false{% endif %}</IsHidden>
|
||||
<Gender>Unspecified</Gender>
|
||||
<TimeZone>None</TimeZone>
|
||||
{% if (ab_id == '00000000-0000-0000-0000-000000000000' or ab_id.startswith('00000000-0000-0000-0009-')) and not (circle.memberships[head.uuid].role == CircleRole.Empty or circle.memberships[head.uuid].state == CircleState.Empty) %}
|
||||
<NetworkInfoList>
|
||||
<NetworkInfo>
|
||||
<DomainId>1</DomainId>
|
||||
<SourceId>WL</SourceId>
|
||||
{% if ab_id == '00000000-0000-0000-0000-000000000000' and circle.memberships[head.uuid].role != CircleRole.Admin %}
|
||||
<DomainTag>00000000-0000-0000-0009-{{ circle.chat_id.upper() }}</DomainTag>
|
||||
<DisplayName>00000000-0000-0000-0009-{{ circle.chat_id.upper() }}</DisplayName>
|
||||
{% endif %}
|
||||
<RelationshipType>5</RelationshipType>
|
||||
<RelationshipState>{% if ab_id.startswith('00000000-0000-0000-0009-') and circle.memberships[head.uuid].state == CircleState.WaitingResponse %}2{% else %}{{ circle.memberships[head.uuid].state.value }}{% endif %}</RelationshipState>
|
||||
<RelationshipStateDate>{{ now }}</RelationshipStateDate>
|
||||
<RelationshipRole>{% if ab_id == '00000000-0000-0000-0000-000000000000' %}{% if circle.memberships[head.uuid].role == CircleRole.StatePendingOutbound %}4{% else %}0{% endif %}{% else %}{% if circle.memberships[head.uuid].role == CircleRole.StatePendingOutbound %}3{% else %}{{ circle.memberships[head.uuid].role.value }}{% endif %}{% endif %}</RelationshipRole>
|
||||
<NDRCount>0</NDRCount>
|
||||
{% if circle.memberships[head.uuid].invite_message %}
|
||||
<InviterMessage>{{ circle.memberships[head.uuid].invite_message }}</InviterMessage>
|
||||
{% endif %}
|
||||
<InviterCID>{% if head.uuid == circle.owner_uuid %}0{% else %}{{ cid_format(circle.memberships[head.uuid].inviter_uuid, decimal = True) }}{% endif %}</InviterCID>
|
||||
{% if circle.memberships[head.uuid].inviter_name %}
|
||||
<InviterName>{{ circle.memberships[head.uuid].inviter_name }}</InviterName>
|
||||
{% endif %}
|
||||
{% if circle.memberships[head.uuid].inviter_email %}
|
||||
<InviterEmail>{{ circle.memberships[head.uuid].inviter_email }}</InviterEmail>
|
||||
{% endif %}
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<LastUpdated>{{ now }}</LastUpdated>
|
||||
<PropertiesChanged />
|
||||
</NetworkInfo>
|
||||
</NetworkInfoList>
|
||||
{% endif %}
|
||||
<IsAutoUpdateDisabled>false</IsAutoUpdateDisabled>
|
||||
<IsShellContact>false</IsShellContact>
|
||||
<TrustLevel>0</TrustLevel>
|
||||
<PropertiesChanged />
|
||||
</contactInfo>
|
||||
<propertiesChanged />
|
||||
<fDeleted>false</fDeleted>
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<lastChange>{{ now }}</lastChange>
|
||||
<CreatedBy>96</CreatedBy>
|
||||
{% endif %}
|
||||
</ManageWLConnectionResult>
|
||||
</ManageWLConnectionResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<UpdateDynamicItemResponse xmlns="http://www.msn.com/webservices/AddressBook" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,3 @@
|
||||
<AppDir code="2" v="{{ v}}">
|
||||
{{ results }}
|
||||
</AppDir>
|
||||
@@ -0,0 +1,15 @@
|
||||
<Category{% if extra %}{{ extra }}{% endif %}>
|
||||
<CategoryID>{{ category.id }}</CategoryID>
|
||||
<Locale>{{ locale }}</Locale>
|
||||
{% if category.icon_url %}
|
||||
<CategoryIconURL>{{ category.icon_url }}</CategoryIconURL>
|
||||
{% else %}
|
||||
<CategoryIconURL />
|
||||
{% endif %}
|
||||
<CategoryName>{{ category.name }}</CategoryName>
|
||||
{% if category.description %}
|
||||
<CategoryDescription>{{ category.description }}</CategoryDescription>
|
||||
{% else %}
|
||||
<CategoryDescription />
|
||||
{% endif %}
|
||||
</Category>
|
||||
@@ -0,0 +1,2 @@
|
||||
<tr id="r{{ cat_id }}e"><td colspan=3 height=1><img src="/static/AppDir/image/spacer.gif"</td></tr>
|
||||
<tr><td colspan=3 height=16><img src="/static/AppDir/image/spacer.gif"</td></tr>
|
||||
@@ -0,0 +1,3 @@
|
||||
<tr id="cid{{ cat_id }}" ><td valign="top" width=2><img src="/static/AppDir/image/spacer.gif" width=2></td><td colspan=2><a href="#" class="t" title="" onClick="ToggleCatShow({{ cat_id }});" width=100%>{{ cat_name }}</a></td></tr>
|
||||
<tr id="r{{ cat_id }}s" ><td colspan=3 height=4><img src="/static/AppDir/image/spacer.gif"></td></tr>
|
||||
<tr ><td colspan=3 height=2 background="/static/AppDir/image/line.gif"></td></tr>
|
||||
@@ -0,0 +1 @@
|
||||
<tr id="r{{ app_id }}" ><td valign="top" width=2><img src="/static/AppDir/image/spacer.gif" width=2></td><td width=100% colspan=2><a id="a{{ app_id }}" href="javascript:RA('{{ app_id }}', '{{ app_id }}')" title="{{ description }}">{{ name }}</a></td></tr>
|
||||
@@ -0,0 +1,377 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<title>MSN Messenger Application Directory</title>
|
||||
<meta name="CODE_LANGUAGE" Content="Python">
|
||||
<meta name="vs_defaultClientScript" content="JavaScript">
|
||||
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
A.t {
|
||||
font-family: Tahoma, Verdana, Arial;
|
||||
font-weight:bold;
|
||||
font-size:8pt;
|
||||
color:#5C5C5C;
|
||||
text-decoration: none;
|
||||
line-height: 12pt
|
||||
}
|
||||
|
||||
A {
|
||||
font-family: Tahoma, Verdana, Arial;
|
||||
font-size:8pt;
|
||||
color:#2F4A8F;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
A:hover {
|
||||
font-family: Tahoma, Verdana, Arial;
|
||||
font-size:8pt;
|
||||
color:#2F4A8F;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.disclaimer {
|
||||
font-family: Tahoma, Verdana, Arial;
|
||||
font-size:8pt;
|
||||
color:#2F4A8F;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ns {
|
||||
font-family: Tahoma, Verdana, Arial;
|
||||
font-size:8pt;
|
||||
color: red;
|
||||
}
|
||||
|
||||
BODY { direction: ltr; }-->
|
||||
</style>
|
||||
|
||||
<script language="javascript">
|
||||
|
||||
var g_DaysToExpireCookie = 30;// [id, [Kids, MinUsers, MaxUsers]]
|
||||
var g_AppInfo = new Array(
|
||||
|
||||
{{ app_entries_js }} [0, [0]]
|
||||
);
|
||||
|
||||
</script>
|
||||
<script language="javascript">
|
||||
function GetCookieValue(name, defVal) {
|
||||
var c = document.cookie;
|
||||
var i = c.indexOf(name + "=");
|
||||
if (i == -1) return defVal;
|
||||
i = i + name.length + 1;
|
||||
var end = c.indexOf(";", i);
|
||||
if (end == -1) end = c.length;
|
||||
return unescape(c.substring(i, end));
|
||||
}
|
||||
|
||||
function SetCookieValue(name, value) {
|
||||
var d = new Date();
|
||||
d.setTime(d.getTime() + 1000 * 60 * 60 * 24 * g_DaysToExpireCookie);
|
||||
document.cookie = name + "=" + escape(value) + "; expires=" + d.toUTCString();
|
||||
}
|
||||
|
||||
function GetUrlValue(name, defVal) {
|
||||
var i = document.URL.toLowerCase().indexOf(name.toLowerCase() + "=");
|
||||
if (i == -1) return defVal;
|
||||
i = document.URL.indexOf("=", i) + 1;
|
||||
var end = document.URL.indexOf("&", i);
|
||||
if (end == -1) end = document.URL.indexOf("#", i);
|
||||
if (end == -1) end = document.URL.length;
|
||||
return document.URL.substring(i, end);
|
||||
}
|
||||
|
||||
function ShowHide(elem, fShow) {
|
||||
if (fShow)
|
||||
elem.style.display = 'block';
|
||||
else
|
||||
elem.style.display = 'none';
|
||||
}
|
||||
|
||||
function ShowHideRowsInRange(idStart, idEnd, fShow) {
|
||||
var eRow = document.all[idStart];
|
||||
var iRow = eRow.rowIndex;
|
||||
var eTable = eRow.parentElement;
|
||||
while (eTable.tagName != 'TABLE') {
|
||||
eTable = eTable.parentElement;
|
||||
}
|
||||
do {
|
||||
ShowHide(eRow, fShow);
|
||||
iRow++;
|
||||
eRow = eTable.rows[iRow];
|
||||
} while (eRow != null && eRow.id != idEnd)
|
||||
ShowHide(eRow, fShow);
|
||||
}
|
||||
|
||||
function ToggleCatShow(CatId) {
|
||||
var id = "r" + CatId + "s";
|
||||
var fShow = true;
|
||||
|
||||
if (document.all[id].style != null && document.all[id].style.display != "none")
|
||||
fShow = false;
|
||||
|
||||
if (CatId == 0 && fShow)
|
||||
UpdateFavUI(); // favs don't all show - only the defined ones do.
|
||||
else
|
||||
{
|
||||
ShowHideRowsInRange(id, "r" + CatId + "e", fShow);
|
||||
// v9 if (CatId != 0) SaveCatShowHideState(CatId, fShow);
|
||||
}
|
||||
}
|
||||
|
||||
function GetCatCookieName() {
|
||||
return "C" + GetUrlValue("k", 0);
|
||||
}
|
||||
|
||||
/* save for V9
|
||||
function SaveCatShowHideState(CatId, fShow) {
|
||||
var aCatHiddenList;
|
||||
var cookieName = GetCatCookieName();
|
||||
|
||||
if (GetCookieValue(cookieName) == null)
|
||||
aCatHiddenList = new Array();
|
||||
else
|
||||
aCatHiddenList = GetCookieValue(cookieName).split(",");
|
||||
|
||||
var fInHiddenList = (aCatHiddenList.join(",").match(CatId) != null);
|
||||
|
||||
if (fShow != fInHiddenList) return;
|
||||
|
||||
if (fShow)
|
||||
aCatHiddenList = aCatHiddenList.join(",").replace(CatId + ",", "").replace("," + CatId, "").replace(CatId, "").split(",");
|
||||
else
|
||||
aCatHiddenList = aCatHiddenList.concat(CatId);
|
||||
|
||||
SetCookieValue(cookieName, aCatHiddenList.join(","));
|
||||
}
|
||||
|
||||
function HideHiddenCats() {
|
||||
var i;
|
||||
var aCatHiddenList;
|
||||
var cookieName = GetCatCookieName();
|
||||
|
||||
if (GetCookieValue(cookieName) == null)
|
||||
aCatHiddenList = new Array();
|
||||
else
|
||||
aCatHiddenList = GetCookieValue(cookieName).split(",");
|
||||
|
||||
for (i = 0; i < aCatHiddenList.length; i++)
|
||||
ShowHideRowsInRange("r" + aCatHiddenList[i] + "s", "r" + aCatHiddenList[i] + "e", false);
|
||||
} */
|
||||
|
||||
function SetFavLinkValues(eLink, sCookieValue, rowId) {
|
||||
var aV = sCookieValue.split(",");
|
||||
eLink.href = "javascript:RA('" + aV[0] + "', '" + rowId + "');";
|
||||
eLink.title = unescape(aV[5]);
|
||||
eLink.innerText = unescape(aV[1]);
|
||||
if (aV.length > 6) {
|
||||
// icon URL
|
||||
eLink.parentElement.parentElement.children[0].children[0].src = unescape(aV[6]);
|
||||
}
|
||||
}
|
||||
|
||||
function SetLinkFocus(e, cmd) {
|
||||
for (i = 0; i < document.links.length; i++) {
|
||||
if (document.links[i] == e) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (cmd) {
|
||||
case "next":
|
||||
i++;
|
||||
break;
|
||||
|
||||
case "prev":
|
||||
i--;
|
||||
break;
|
||||
}
|
||||
|
||||
if (i < 0)
|
||||
i = document.links.length - 1;
|
||||
else if (i >= document.links.length)
|
||||
i = 0;
|
||||
|
||||
e = document.links[i];
|
||||
if ((e.style.display != "none") &&
|
||||
(e.parentElement.style.display != "none") &&
|
||||
(e.parentElement.parentElement.style.display != "none")) {
|
||||
e.focus();
|
||||
}
|
||||
else {
|
||||
SetLinkFocus(e, cmd);
|
||||
}
|
||||
}
|
||||
|
||||
function OnKeyDownHandler() {
|
||||
var e = window.event;
|
||||
|
||||
switch (e.keyCode) {
|
||||
case 40: // down
|
||||
SetLinkFocus(e.srcElement, "next");
|
||||
break;
|
||||
|
||||
case 38: // up
|
||||
SetLinkFocus(e.srcElement, "prev");
|
||||
break;
|
||||
|
||||
case 32: // space
|
||||
e.srcElement.click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function OnLoad() {
|
||||
for (var i = 0; i < document.links.length; i++) {
|
||||
document.links[i].onkeydown = OnKeyDownHandler;
|
||||
}
|
||||
UpdateFavUI();
|
||||
// v9 HideHiddenCats();
|
||||
// preload any images so we don't see layout changes if the images are slow to get
|
||||
var img = new Image();
|
||||
img.src = "/static/AppDir/image/line.gif";
|
||||
img.src = "/static/AppDir/image/spacer.gif";
|
||||
img.src = "/static/AppDir/image/defentry.png";
|
||||
img.src = "/static/AppDir/image/icon_star.png";
|
||||
img.src = "/static/AppDir/image/icon_arrow.png";
|
||||
|
||||
try {
|
||||
window.external.Initialize(); // tell the client we are done loading.
|
||||
}
|
||||
catch(e) {
|
||||
window.status = "Initialize would have been called.";
|
||||
}
|
||||
}
|
||||
|
||||
function GetFavsCookieNamePrefix() {
|
||||
return "F" + GetUrlValue("k", 0) + "-" + GetUrlValue("L", "en-US");
|
||||
}
|
||||
|
||||
function UpdateFavUI() {
|
||||
if (document.all["cid0"] != null) {
|
||||
var cookieName = GetFavsCookieNamePrefix();
|
||||
var aC = new Array(
|
||||
GetCookieValue(cookieName + 1, "0"),
|
||||
GetCookieValue(cookieName + 2, "0"),
|
||||
GetCookieValue(cookieName + 3, "0"));
|
||||
if (aC[0] == 0)
|
||||
ShowHideRowsInRange("cid0", "r0e", false);
|
||||
else {
|
||||
ShowHideRowsInRange("cid0", "r0e", true);
|
||||
for (var i = 0; i < 3; i++) {
|
||||
SetFavLinkValues(document.all["a-" + (i+1)], aC[i], -(i+1));
|
||||
ShowHide(document.all["r-" + (i+1)], aC[i] != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function AddIdToFavorites(id, Name, Kids, MinUsers, MaxUsers, Desc, iconUrl) {
|
||||
var cookieName = GetFavsCookieNamePrefix();
|
||||
var aFavs = new Array(
|
||||
GetCookieValue(cookieName + 1, "0").split(","),
|
||||
GetCookieValue(cookieName + 2, "0").split(","),
|
||||
GetCookieValue(cookieName + 3, "0").split(",")
|
||||
);
|
||||
// if the same id is already a fav, delete it and shift the others up
|
||||
var i;
|
||||
for (i=0; i < 2; i++) {
|
||||
if (aFavs[i][0] == id) {
|
||||
var j;
|
||||
for (j=i; j < 2; j++) {
|
||||
aFavs[j] = aFavs[j+1];
|
||||
}
|
||||
aFavs[3] = "0".split(",");
|
||||
}
|
||||
}
|
||||
// now insert the new fav and shift the others down
|
||||
SetCookieValue(cookieName + 1, new Array(id, escape(Name), Kids, MinUsers, MaxUsers, escape(Desc), escape(iconUrl)).join(","));
|
||||
SetCookieValue(cookieName + 2, aFavs[0].join(","));
|
||||
SetCookieValue(cookieName + 3, aFavs[1].join(","));
|
||||
UpdateFavUI();
|
||||
}
|
||||
|
||||
function RA(id, rowId) {
|
||||
var appMinUsers;
|
||||
var appMaxUsers;
|
||||
var appKids;
|
||||
var appName;
|
||||
var appDesc;
|
||||
var SubscriptionURL;
|
||||
|
||||
if (id > 0) {
|
||||
var i;
|
||||
for (i = 0; g_AppInfo[i][0] > 0; i++) {
|
||||
if (id == g_AppInfo[i][0]) {
|
||||
var aInfo = g_AppInfo[i];
|
||||
appKids = aInfo[1][0];
|
||||
appMinUsers = aInfo[1][1];
|
||||
appMaxUsers = aInfo[1][2];
|
||||
SubscriptionURL = aInfo[1][3];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Layout dependent code! - first cell of row has img
|
||||
//var iconUrl = "/static/AppDir/image/spacer.gif"; // document.all["r" + rowId].children[0].children[0].src;
|
||||
var iconUrl = document.all["r" + rowId].children[0].children[0].src;
|
||||
|
||||
var eLink = document.all["a" + rowId];
|
||||
appName = eLink.innerText;
|
||||
var title = eLink.title;
|
||||
AddIdToFavorites(id, appName, appKids, appMinUsers, appMaxUsers, title, iconUrl);
|
||||
} else { // fav id
|
||||
var aFav = GetCookieValue(GetFavsCookieNamePrefix() + id, "0").split(",");
|
||||
id = aFav[0];
|
||||
appName = unescape(aFav[1]);
|
||||
appKids = aFav[2];
|
||||
appMinUsers = aFav[3];
|
||||
appMaxUsers = aFav[4];
|
||||
}
|
||||
try {
|
||||
var Ex = window.external;
|
||||
if(FindClientVersion() >= 6.1) {
|
||||
Ex.StartApp2(appName, id, appMaxUsers, appMinUsers, appKids, SubscriptionURL);
|
||||
}
|
||||
else {
|
||||
Ex.StartApp(appName, id, appMaxUsers, appMinUsers, appKids);
|
||||
}
|
||||
} catch(e) {
|
||||
window.status = "RunApp(" + appName + ", " + id + ", " + appMaxUsers + ", " + appMinUsers + ", " + appKids + ")";
|
||||
}
|
||||
}
|
||||
|
||||
function FindClientVersion() {
|
||||
var cstrVersion = "Version";
|
||||
// find the query string (URL string after the '?' char
|
||||
var query = document.location.search.substring(1);
|
||||
// search the query string for the "Version" paramenter
|
||||
var index = query.indexOf(cstrVersion);
|
||||
// get the string at the end of the version parameter + 1 (skip '=' character)
|
||||
var value = query.substring(index + cstrVersion.length + 1);
|
||||
// return what is after the '=' character and before the '&'
|
||||
var iend = value.indexOf('&');
|
||||
if(iend <= 0)
|
||||
return value;
|
||||
else
|
||||
return value.substring(0, iend);
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
</HEAD>
|
||||
<body oncontextmenu="return false;" onLoad="OnLoad();" scroll="auto" leftmargin="8" topmargin="10">
|
||||
<table cellspacing="0" cellpadding="0" width="201" height="100%" border="0">
|
||||
{{ results }}
|
||||
<noscript class="ns">Your browser's current security settings will not allow you to use Fun & Games. To use Fun & Games, set your browser security to medium or low, and be sure cookies and scripting are enabled.</noscript><tr><td colspan=3 height=16><img src="/static/AppDir/image/spacer.gif"/></td></tr>
|
||||
<tr id="cid0" style="{display: none}"><td colspan=3><a href="#" class="t" title="Fun & Games activities you have launched recently" onClick="ToggleCatShow(0);" width=100%>Recently Played</a></td></tr>
|
||||
<tr id="r0s" style="{display: none}"><td colspan=3 height=4><img src="/static/AppDir/image/spacer.gif"></td></tr>
|
||||
<tr style="{display: none}"><td colspan=3 height=2 background="/static/AppDir/image/line.gif"></td></tr>
|
||||
<tr id="r-1" style="{display: none}"><td valign="top" width=18 height=12><img src=""></td><td width=100% colspan=2><a id="a-1" href="javascript:RA('-1', '-1')" title=""></a></td></tr>
|
||||
<tr id="r-2" style="{display: none}"><td valign="top" width=18 height=12><img src=""></td><td width=100% colspan=2><a id="a-2" href="javascript:RA('-2', '-2')" title=""></a></td></tr>
|
||||
<tr id="r-3" style="{display: none}"><td valign="top" width=18 height=12><img src=""></td><td width=100% colspan=2><a id="a-3" href="javascript:RA('-3', '-3')" title=""></a></td></tr>
|
||||
<tr id="r0e"><td colspan=3 height=1><img src="/static/AppDir/image/spacer.gif"</td></tr>
|
||||
<tr><td colspan=3 height=100%><img src="/static/AppDir/image/spacer.gif"</td></tr>
|
||||
|
||||
</table>
|
||||
</body>
|
||||
</HTML>
|
||||
@@ -0,0 +1,48 @@
|
||||
<EntryID>{{ entry.id }}</EntryID>
|
||||
<SubscriptionURL />
|
||||
{% if entry.error %}
|
||||
<Error>{{ entry.error }}</Error>
|
||||
{% else %}
|
||||
<Error/>
|
||||
{% endif %}
|
||||
<Locale>{{ entry.locale or 'en-US' }}</Locale>
|
||||
<Kids>{{ 1 if entry.kids else 0 }}</Kids>
|
||||
<Page>{{ entry.page }}</Page>
|
||||
<CategoryID>{{ entry.category_id }}</CategoryID>
|
||||
<Sequence>{{ i }}</Sequence>
|
||||
<Name>{{ entry.name }}</Name>
|
||||
<Description>{{ entry.description }}</Description>
|
||||
<URL>{{ entry.url }}</URL>
|
||||
{% if entry.icon_url %}
|
||||
<IconURL>{{ entry.icon_url }}</IconURL>
|
||||
<AppIconURL>{{ entry.icon_url }}</AppIconURL>
|
||||
{% else %}
|
||||
<IconURL/>
|
||||
<AppIconURL/>
|
||||
{% endif %}
|
||||
<PassportSiteID>0</PassportSiteID>
|
||||
<Type>{{ entry.type }}</Type>
|
||||
<Height>{{ entry.height }}</Height>
|
||||
<Width>{{ entry.width }}</Width>
|
||||
<Location>{{ entry.location }}</Location>
|
||||
<MinUsers>{{ entry.min_users }}</MinUsers>
|
||||
<MaxUsers>{{ entry.max_users }}</MaxUsers>
|
||||
<EnableIP>{{ bool_to_str(entry.enable_ip) }}</EnableIP>
|
||||
<ActiveX>{{ bool_to_str(entry.activex) }}</ActiveX>
|
||||
<SendFile>{{ bool_to_str(entry.send_file) }}</SendFile>
|
||||
<SendIM>{{ bool_to_str(entry.send_im) }}</SendIM>
|
||||
<ReceiveIM>{{ bool_to_str(entry.receive_im) }}</ReceiveIM>
|
||||
<ReplaceIM>{{ bool_to_str(entry.replace_im) }}</ReplaceIM>
|
||||
<Windows>{{ bool_to_str(entry.windows) }}</Windows>
|
||||
<MaxPacketRate>{{ entry.max_packet_rate }}</MaxPacketRate>
|
||||
{% if entry.log_url %}
|
||||
<LogURL>{{ entry.log_url }}</LogURL>
|
||||
{% else %}
|
||||
<LogURL/>
|
||||
{% endif %}
|
||||
<UserProperties>{{ bool_to_str(entry.user_properties) }}</UserProperties>
|
||||
{% if entry.minimum_client_version %}
|
||||
<ClientVersion>{{ entry.minimum_client_version }}</ClientVersion>
|
||||
{% endif %}
|
||||
<AppType>{{ entry.app_type }}</AppType>
|
||||
<Hidden>{{ bool_to_str(entry.hidden) }}</Hidden>
|
||||
@@ -0,0 +1,3 @@
|
||||
<Entry{% if extra %}{{ extra }}{% endif %}>
|
||||
{{ entry }}
|
||||
</Entry>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
{% if entry %}
|
||||
<GetAppEntryResponse xmlns="http://www.msn.com/webservices/Messenger/Client">
|
||||
<GetAppEntryResult>
|
||||
{{ entry }}
|
||||
</GetAppEntryResult>
|
||||
</GetAppEntryResponse>
|
||||
{% else %}
|
||||
<GetAppEntryResponse xmlns="http://www.msn.com/webservices/Messenger/Client" />
|
||||
{% endif %}
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>AppDirectory Version Page</TITLE>
|
||||
</HEAD>
|
||||
<BODY>{{ version }}</BODY>
|
||||
</HTML>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<GetFilteredDataSet2Response xmlns="http://www.msn.com/webservices/Messenger/Client">
|
||||
<GetFilteredDataSet2Result>
|
||||
{{ diffgram }}
|
||||
</GetFilteredDataSet2Result>
|
||||
</GetFilteredDataSet2Response>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<GetFullDataSetResponse xmlns="http://www.msn.com/webservices/Messenger/Client">
|
||||
<GetFullDataSetResult>
|
||||
{{ diffgram }}
|
||||
</GetFullDataSetResult>
|
||||
</GetFullDataSetResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,9 @@
|
||||
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
{% if results %}
|
||||
<NewDataSet>
|
||||
{{ results }}
|
||||
</NewDataSet>
|
||||
{% else %}
|
||||
<NewDataSet />
|
||||
{% endif %}
|
||||
</diffgr:diffgram>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<GetClientConfigResponse xmlns="http://www.msn.com/webservices/Messenger/Client">
|
||||
<GetClientConfigResult><![CDATA[{MsgrConfig}]]></GetClientConfigResult>
|
||||
</GetClientConfigResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,102 @@
|
||||
<MsgrConfig>
|
||||
<Simple>
|
||||
<Config>
|
||||
<ExpiresInDays>0</ExpiresInDays>
|
||||
</Config>
|
||||
<DisablePhoneDialer>1</DisablePhoneDialer>
|
||||
<MinFlashPlayer BuildNumber="60" MajorVersion="7" MinorVersion="0"></MinFlashPlayer>
|
||||
<Relay>
|
||||
<Enabled>0</Enabled>
|
||||
<MaxCallLength>0</MaxCallLength>
|
||||
</Relay>
|
||||
<TrustedDomains>
|
||||
<domain name="hiden.cc"/>
|
||||
<domain name="ugnet.gay"/>
|
||||
<domain name="crosstalk.im"/>
|
||||
<domain name="ctsrv.gay"/>
|
||||
</TrustedDomains>
|
||||
<ErrorResponseTable>
|
||||
<Feature type="0" name="Login">
|
||||
<Entry hr="0x80072EE7" action="3"></Entry>
|
||||
<Entry hr="0x81000306" action="3"></Entry>
|
||||
<Entry hr="0x80072EFD" action="3"></Entry>
|
||||
<Entry hr="0x81000362" action="3"></Entry>
|
||||
<Entry hr="0x8100030E" action="3"></Entry>
|
||||
<Entry hr="0x80072745" action="3"></Entry>
|
||||
<Entry hr="0x800701F7" action="3"></Entry>
|
||||
<Entry hr="0x80072EFF" action="3"></Entry>
|
||||
<Entry hr="0x81000363" action="3"></Entry>
|
||||
<Entry hr="0x81000395" action="3"></Entry>
|
||||
<Entry hr="0x800B0001" action="3"></Entry>
|
||||
<Entry hr="0x81000323" action="3"></Entry>
|
||||
<Entry hr="0x80072F19" action="3"></Entry>
|
||||
<Entry hr="0x800701F8" action="3"></Entry>
|
||||
<Entry hr="0x80072746" action="3"></Entry>
|
||||
<Entry hr="0x800701F6" action="3"></Entry>
|
||||
<Entry hr="0x81000377" action="3"></Entry>
|
||||
<Entry hr="0x81000314" action="3"></Entry>
|
||||
<Entry hr="0x81000378" action="3"></Entry>
|
||||
<Entry hr="0x80072EFF" action="3"></Entry>
|
||||
<Entry hr="0x80070190" action="3"></Entry>
|
||||
<Entry hr="0x80070197" action="3"></Entry>
|
||||
<Entry hr="0x80048820" action="3"></Entry>
|
||||
<Entry hr="0x80048829" action="3"></Entry>
|
||||
<Entry hr="0x80048834" action="3"></Entry>
|
||||
<Entry hr="0x80048852" action="3"></Entry>
|
||||
<Entry hr="0x8004886a" action="3"></Entry>
|
||||
<Entry hr="0x8004886b" action="3"></Entry>
|
||||
</Feature>
|
||||
<Feature type="2" name="MapFile">
|
||||
<Entry hr="0x810003F0" action="3"></Entry>
|
||||
<Entry hr="0x810003F1" action="3"></Entry>
|
||||
<Entry hr="0x810003F2" action="3"></Entry>
|
||||
<Entry hr="0x810003F3" action="3"></Entry>
|
||||
<Entry hr="0x810003F4" action="3"></Entry>
|
||||
<Entry hr="0x810003F5" action="3"></Entry>
|
||||
<Entry hr="0x810003F6" action="3"></Entry>
|
||||
<Entry hr="0x810003F7" action="3"></Entry>
|
||||
</Feature>
|
||||
</ErrorResponseTable>
|
||||
</Simple>
|
||||
<TabConfig>
|
||||
{tabs}
|
||||
</TabConfig>
|
||||
<AbchCfg>
|
||||
<abchconfig>
|
||||
<url>https://ctsvcs.addressbook.ugnet.gay/abservice.asmx</url>
|
||||
</abchconfig>
|
||||
</AbchCfg>
|
||||
<LocalizedConfig Market="en-US">
|
||||
<AdMainConfig>
|
||||
<TextAdRefresh>1</TextAdRefresh>
|
||||
<TextAdServer>http://ctsvcs.advertising.ugnet.gay/ads/txt</TextAdServer>
|
||||
<AdBanner20URL Refresh="300">http://ctsvcs.advertising.ugnet.gay/ads/banner</AdBanner20URL>
|
||||
</AdMainConfig>
|
||||
<AppDirConfig>
|
||||
<AppDirPageURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/Directory.aspx?L=en-us</AppDirPageURL>
|
||||
<AppDirSeviceURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
|
||||
<AppDirVersionURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
|
||||
</AppDirConfig>
|
||||
<MSNSearch>
|
||||
<DesktopInstallURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</DesktopInstallURL>
|
||||
<ImagesURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=images</ImagesURL>
|
||||
<NearMeURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</NearMeURL>
|
||||
<NewsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$+news&ia=news</NewsURL>
|
||||
<SearchKidsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchKidsURL>
|
||||
<SearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchURL>
|
||||
<SharedSearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL>
|
||||
<SharedSearchURL2>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL2>
|
||||
</MSNSearch>
|
||||
<MsnTodayConfig>
|
||||
<MsnTodayURL>http://today.msgrsvcs.ctsrv.gay/start?msn=1</MsnTodayURL>
|
||||
</MsnTodayConfig>
|
||||
<MusicIntegration URL="https://www.last.fm/search/tracks?q=$ARTIST$+$TITLE$"/>
|
||||
<RL>
|
||||
<ViewProfileURL>https://crosstalk.im/account/settings</ViewProfileURL>
|
||||
</RL>
|
||||
<TermsOfUse>
|
||||
<TermsOfUseSID>956</TermsOfUseSID>
|
||||
<TermsOfUseURL>https://crosstalk.im/tos</TermsOfUseURL>
|
||||
</TermsOfUse>
|
||||
</LocalizedConfig>
|
||||
</MsgrConfig>
|
||||
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MsgrConfig>
|
||||
<Simple>
|
||||
<Config>
|
||||
<ExpiresInDays>0</ExpiresInDays>
|
||||
</Config>
|
||||
<P2PConfig>
|
||||
<ObjectStore>
|
||||
<SendDelay>1</SendDelay>
|
||||
</ObjectStore>
|
||||
</P2PConfig>
|
||||
<DisablePhoneDialer>1</DisablePhoneDialer>
|
||||
<GetItemVersionForUnknown>false</GetItemVersionForUnknown>
|
||||
<MinFlashPlayer BuildNumber="28" MajorVersion="9" MinorVersion="0" />
|
||||
<Relay>
|
||||
<Enabled>0</Enabled>
|
||||
<MaxCallLength>0</MaxCallLength>
|
||||
</Relay>
|
||||
<Contacts>
|
||||
<Client ZombieServerDetectDelay="1800" ZombieServerDetectInterval="30" ZombieServerDetectResumeDelay="1800" />
|
||||
<Server ZombieServerDetectDelay="900" ZombieServerDetectResumeDelay="900" ZombieServerDetectConnectDelay="900" ZombieServerDetectLongDelay="900" />
|
||||
</Contacts>
|
||||
<TrustedDomains>
|
||||
<domain name="hiden.cc"/>
|
||||
<domain name="ugnet.gay"/>
|
||||
<domain name="crosstalk.im"/>
|
||||
<domain name="ctsrv.gay"/>
|
||||
</TrustedDomains>
|
||||
<ErrorResponseTable>
|
||||
<Feature type="0" name="Login">
|
||||
<Entry hr="0x80004002" action="3"/>
|
||||
<Entry hr="0x80004004" action="3"/>
|
||||
<Entry hr="0x80004005" action="3"/>
|
||||
<Entry hr="0x8000402A" action="3"/>
|
||||
<Entry hr="0x8000FFFF" action="3"/>
|
||||
<Entry hr="0x8001012E" action="3"/>
|
||||
<Entry hr="0x80040200" action="3"/>
|
||||
<Entry hr="0x80048051" action="3"/>
|
||||
<Entry hr="0x80048820" action="3"/>
|
||||
<Entry hr="0x80048823" action="3"/>
|
||||
<Entry hr="0x80070002" action="3"/>
|
||||
<Entry hr="0x80070005" action="3"/>
|
||||
<Entry hr="0x8007000E" action="3"/>
|
||||
<Entry hr="0x80070057" action="3"/>
|
||||
<Entry hr="0x8007007E" action="3"/>
|
||||
<Entry hr="0x800702E4" action="3"/>
|
||||
<Entry hr="0x800706BA" action="3"/>
|
||||
<Entry hr="0x800706BE" action="3"/>
|
||||
<Entry hr="0x80071392" action="3"/>
|
||||
<Entry hr="0x80072745" action="3"/>
|
||||
<Entry hr="0x80072746" action="3"/>
|
||||
<Entry hr="0x80072EE2" action="3"/>
|
||||
<Entry hr="0x80072EF3" action="3"/>
|
||||
<Entry hr="0x80072EFD" action="3"/>
|
||||
<Entry hr="0x80072EFF" action="3"/>
|
||||
<Entry hr="0x80072F06" action="3"/>
|
||||
<Entry hr="0x80072F7D" action="3"/>
|
||||
<Entry hr="0x800C013E" action="3"/>
|
||||
<Entry hr="0x80191002" action="3"/>
|
||||
<Entry hr="0x81000306" action="3"/>
|
||||
<Entry hr="0x8100030D" action="3"/>
|
||||
<Entry hr="0x81000314" action="3"/>
|
||||
<Entry hr="0x81000362" action="3"/>
|
||||
<Entry hr="0x81000378" action="3"/>
|
||||
<Entry hr="0x81000395" action="3"/>
|
||||
<Entry hr="0x85AE000B" action="3"/>
|
||||
<Entry hr="0x85AE000F" action="3"/>
|
||||
<Entry hr="0x85AE001D" action="3"/>
|
||||
<Entry hr="0x85AE0022" action="3"/>
|
||||
<Entry hr="0x85AE0024" action="3"/>
|
||||
<Entry hr="0x85AE0027" action="3"/>
|
||||
<Entry hr="0x85AE003C" action="3"/>
|
||||
<Entry hr="0x85AE0053" action="3"/>
|
||||
<Entry hr="0x8E5E0152" action="3"/>
|
||||
<Entry hr="0x8E5E0158" action="3"/>
|
||||
<Entry hr="0x8E5E0211" action="3"/>
|
||||
<Entry hr="0x8E5E0220" action="3"/>
|
||||
<Entry hr="0x8E5E0226" action="3"/>
|
||||
<Entry hr="0x8E5E03FE" action="3"/>
|
||||
<Entry hr="0x8E5E0408" action="3"/>
|
||||
<Entry hr="0x8E5E05F6" action="3"/>
|
||||
<Entry hr="0x8E5E0710" action="3"/>
|
||||
<Entry hr="0x8E5E0713" action="3"/>
|
||||
</Feature>
|
||||
<Feature type="2" name="MapFile">
|
||||
<Entry hr="0x810003F1" action="3"/>
|
||||
<Entry hr="0x810003F6" action="3"/>
|
||||
</Feature>
|
||||
<Feature type="3" name="P2P">
|
||||
<Entry hr="0x82000016" action="3"/>
|
||||
<Entry hr="0x82000017" action="3"/>
|
||||
<Entry hr="0x82000019" action="3"/>
|
||||
<Entry hr="0x8200001b" action="3"/>
|
||||
<Entry hr="0x8200001d" action="3"/>
|
||||
<Entry hr="0x8200001e" action="3"/>
|
||||
<Entry hr="0x82000024" action="3"/>
|
||||
<Entry hr="0x82000026" action="3"/>
|
||||
</Feature>
|
||||
</ErrorResponseTable>
|
||||
<USBDevices>
|
||||
<Device VID="0x045e" PID="0x0719"/>
|
||||
<Device VID="0x045e" PID="0x0722"/>
|
||||
<Device VID="0x041e" PID="0x4080"/>
|
||||
</USBDevices>
|
||||
<CirclesWeb General="https://crosstalk.im/circles/$CIRCLECID$/settings/" General-SiteId="73625" Management="https://crosstalk.im/circles/$CIRCLECID$/settings/" Management-SiteId="73625" Membership="https://crosstalk.im/circles/$CIRCLECID$/settings/" Membership-SiteId="73625" Leave="https://crosstalk.im/circles/$CIRCLECID$/settings/" Leave-SiteId="73625" Disc="https://discord.gg/dumJwXTPxX" />
|
||||
<AnonymousIMSettings>
|
||||
<SettingsPage URL="http://settings.messenger.live.com/applications/WebSettings.aspx" SiteID="76215" />
|
||||
</AnonymousIMSettings>
|
||||
</Simple>
|
||||
<AbchCfg>
|
||||
<abchconfig>
|
||||
<url>https://ctsvcs.addressbook.ugnet.gay/abservice.asmx</url>
|
||||
</abchconfig>
|
||||
</AbchCfg>
|
||||
<LocalizedConfig Market="en-US">
|
||||
<AdMainConfig>
|
||||
<TextAdRotation>420</TextAdRotation>
|
||||
<TextAdRefresh>1</TextAdRefresh>
|
||||
<TextAdServer>http://ctsvcs.advertising.ugnet.gay/ads/txt</TextAdServer>
|
||||
<AdBanner20URL Refresh="300">http://ctsvcs.advertising.ugnet.gay/ads/banner</AdBanner20URL>
|
||||
<StdAd AdVisible="60" VideoVisible="120" VideoDldIntvl="0">
|
||||
<VideoFeeds FeedsListURL="http://ctsvcs.advertising.ugnet.gay/svcs/msn-video-feeds/"/>
|
||||
</StdAd>
|
||||
</AdMainConfig>
|
||||
<AppDirConfig>
|
||||
<AppDirPageURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/Directory.aspx?L=en-us</AppDirPageURL>
|
||||
<AppDirSeviceURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
|
||||
<AppDirVersionURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
|
||||
</AppDirConfig>
|
||||
<Contacts>
|
||||
<ABPendingRequests>
|
||||
<SiteId>73625</SiteId>
|
||||
<height>672</height>
|
||||
<IncludeSNRequests>true</IncludeSNRequests>
|
||||
<width>808</width>
|
||||
<urlcid>http://cid-%1!16.16I64X!.profile.live.com/invites?partner=Messenger</urlcid>
|
||||
</ABPendingRequests>
|
||||
<EditMyLiveContactProfile>
|
||||
<url>http://social.ugnet.gay/profile.aspx?action=edit&mode=activecontacts&mkt=en-us&partner=Messenger</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyLiveContactProfile>
|
||||
<EditMyProfile>
|
||||
<url>http://profile.live.com/details</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyProfile>
|
||||
<Import>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/connect/?partner=Messenger</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</Import>
|
||||
<MessengerInvite>
|
||||
<url>http://cid-%1.profile.live.com/connect/send.aspx?email=%2</url>
|
||||
<urlcid>http://cid-%1.profile.live.com/connect/send.aspx?cid=%2</urlcid>
|
||||
<SiteId>73625</SiteId>
|
||||
</MessengerInvite>
|
||||
<Profile>
|
||||
<url>http://social.ugnet.gay/Profile.aspx?partner=Messenger&mkt=en-us&mem=%ls</url>
|
||||
<urlcid>http://social.ugnet.gay/Profile.aspx?partner=Messenger&mkt=en-us&cid=%ls</urlcid>
|
||||
<urlcid2>http://cid-%1!16.16I64X!.profile.live.com</urlcid2>
|
||||
<SiteId>73625</SiteId>
|
||||
</Profile>
|
||||
<SNInvites>
|
||||
<url>http://cid-%1.profile.live.com/connect/Messenger.aspx?Email=%2</url>
|
||||
<urlcid>http://cid-%1.profile.live.com/connect/Messenger.aspx?cid=0x%2</urlcid>
|
||||
<SiteId>73625</SiteId>
|
||||
</SNInvites>
|
||||
<ViewMapEnabled>true</ViewMapEnabled>
|
||||
</Contacts>
|
||||
<ContactCard>
|
||||
<AddToMySpaceSiteId>45930</AddToMySpaceSiteId>
|
||||
<AddToMySpaceUrl>http://social.ugnet.gay/?addblogentry=true&mkt=nl-nl</AddToMySpaceUrl>
|
||||
<ContactCardDisabled>false</ContactCardDisabled>
|
||||
<CreateSpaceSiteId>45930</CreateSpaceSiteId>
|
||||
<CreateSpaceUrl>http://social.ugnet.gay/signup.aspx?mkt=nl-nl</CreateSpaceUrl>
|
||||
<GetItemVerUrl>http://ctas.storage.ugnet.gay/storageservice/schematizedstore.asmx</GetItemVerUrl>
|
||||
<GetXmlFeedUrl>http://social.ugnet.gay/contactcard/contactcardservice.asmx</GetXmlFeedUrl>
|
||||
<MySpaceSiteId>45930</MySpaceSiteId>
|
||||
<MySpaceUrl>http://social.ugnet.gay/homepage.aspx</MySpaceUrl>
|
||||
<SpaceBaseSiteId>45930</SpaceBaseSiteId>
|
||||
<SpaceBaseUrl>http://social.ugnet.gay</SpaceBaseUrl>
|
||||
<SpaceIntegrationEnabled>true</SpaceIntegrationEnabled>
|
||||
</ContactCard>
|
||||
<FlashUpgradeURL>http://storage.ugnet.gay/crosstalk-dist/client/all/tools/flashplayer_10_3r183_48_winax.exe</FlashUpgradeURL>
|
||||
<GLinkMarket v="en_us" />
|
||||
<LiveFolders UpsellMessageId="1" />
|
||||
<MessengerBlogURL>https://crosstalk.im/blog</MessengerBlogURL>
|
||||
<MSNSearch>
|
||||
<DesktopInstallURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</DesktopInstallURL>
|
||||
<ImagesURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=images</ImagesURL>
|
||||
<NearMeURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</NearMeURL>
|
||||
<NewsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$+news&ia=news</NewsURL>
|
||||
<PeopleSearchURL>http://home.live.com/search?query=$QUERY$</PeopleSearchURL>
|
||||
<PeopleSearchSiteID>73625</PeopleSearchSiteID>
|
||||
<SearchKidsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchKidsURL>
|
||||
<SearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchURL>
|
||||
<SharedSearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL>
|
||||
<SharedSearchURL2>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL2>
|
||||
</MSNSearch>
|
||||
<MsnTodayConfig>
|
||||
<MsnTodaySiteID>6528</MsnTodaySiteID>
|
||||
<MsnTodayURL>http://today.msgrsvcs.ctsrv.gay/start?wlm=1</MsnTodayURL>
|
||||
<Flags>2</Flags>
|
||||
</MsnTodayConfig>
|
||||
<MusicIntegration URL="https://www.last.fm/search/tracks?q=$ARTIST$+$TITLE$"/>
|
||||
<OneCare Enabled="0" />
|
||||
<PE Tracking=""/>
|
||||
<PremiumAV Visibility="1" />
|
||||
<PSTNOut Hidden="0" />
|
||||
<ReportAbuse>
|
||||
<ReportAbuseSID />
|
||||
<ReportAbuseURL>https://crosstalk.im/report</ReportAbuseURL>
|
||||
</ReportAbuse>
|
||||
<RL>
|
||||
<ViewProfileURL>http://g.msn.com/5meen_us/106?%1&Plcid=%2!hs!&%3&Country=%4!hs!&BrandID=%5&passport=%6</ViewProfileURL>
|
||||
</RL>
|
||||
<SDrive Enabled="true" />
|
||||
<TermsOfUse>
|
||||
<TermsOfUseSID>956</TermsOfUseSID>
|
||||
<TermsOfUseURL>https://crosstalk.im/tos</TermsOfUseURL>
|
||||
</TermsOfUse>
|
||||
<VoiceClip Hidden="0" />
|
||||
<VoiceVideo>
|
||||
<DisableSipProxyInviteTest>0</DisableSipProxyInviteTest>
|
||||
<DisableSipProxyCapability>0</DisableSipProxyCapability>
|
||||
<DisableSipProxyInvite>0</DisableSipProxyInvite>
|
||||
<DisableSipProxyCapability2>0</DisableSipProxyCapability2>
|
||||
<DisableSipProxyInvite2>0</DisableSipProxyInvite2>
|
||||
</VoiceVideo>
|
||||
<TabConfig>
|
||||
<RowNumber>1</RowNumber>
|
||||
<slots>
|
||||
{% for tab in tabs %}
|
||||
<URL id="{{ tab.id }}">
|
||||
https://ctsvcs.advertising.ugnet.gay/svcs/tab={{ tab.id }}
|
||||
</URL>
|
||||
{% endfor %}
|
||||
</slots>
|
||||
</TabConfig>
|
||||
</LocalizedConfig>
|
||||
</MsgrConfig>
|
||||
@@ -0,0 +1,804 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<MsgrConfig>
|
||||
<Brands>
|
||||
<Client v="def" bv="1.0.1.0">
|
||||
<b i="FT01" v="1.0.5.0" f="FT01_fr-fr_R4.cab" u="http://g.msn.com/0USWLPIT/9" p="FT01" />
|
||||
<b i="Q002" v="1.0.0.1" f="Q002_en-us_P10.cab" u="http://g.msn.com/0USWLPIT/5" p="Q001" />
|
||||
<b i="VZ03" v="1.0" f="VZ03_en-us_VZ03_R7.cab" u="http://g.msn.com/0USWLPIT/11" p="VZ02" />
|
||||
</Client>
|
||||
<Client v="2" CDNVER="http://cba.domains.live.com/cdn1" CDNCAB="http://cba.domains.live.com/cdn3" CDNPRV="http://cba.domains.live.com/prvw" />
|
||||
<Client v="3" CDNVER="http://cba.domains.live.com/cdn1" CDNCAB="http://cba.domains.live.com/cdn3" CDNPRV="http://cba.domains.live.com/prvw" />
|
||||
</Brands>
|
||||
<Simple>
|
||||
<Config>
|
||||
<ExpiresInDays>2</ExpiresInDays>
|
||||
</Config>
|
||||
<P2PConfig>
|
||||
<ObjectStore>
|
||||
<SendDelay>1</SendDelay>
|
||||
</ObjectStore>
|
||||
</P2PConfig>
|
||||
<DisablePhoneDialer>1</DisablePhoneDialer>
|
||||
<GetItemVersionForUnknown>false</GetItemVersionForUnknown>
|
||||
<Logitech>
|
||||
<PremiumAVConfigServer>http://mplocate.spotlife.net/locate.sxml</PremiumAVConfigServer>
|
||||
<PreRollEnabled>1</PreRollEnabled>
|
||||
<WebcamConfigServer>http://mlocate.spotlife.net/locate.sxml</WebcamConfigServer>
|
||||
</Logitech>
|
||||
<MinFlashPlayer BuildNumber="28" MajorVersion="9" MinorVersion="0" />
|
||||
<RadUrl Tracking="http://global.msads.net/ads/abuimg/%PACKID%.xml">http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=</RadUrl>
|
||||
<ComScoreUrlFormat>http://b.scorecardresearch.com/p?c1=7&c2=3000001&c3=%1!d!&cj=1</ComScoreUrlFormat>
|
||||
<Relay>
|
||||
<Enabled>1</Enabled>
|
||||
<MaxCallLength>0</MaxCallLength>
|
||||
<RegistrationDomain>4.68.251.254</RegistrationDomain>
|
||||
<RelayDNS>avrelay.msn.com</RelayDNS>
|
||||
<TimeoutToFallback>7000</TimeoutToFallback>
|
||||
</Relay>
|
||||
<Contacts>
|
||||
<Client ZombieServerDetectDelay="1800" ZombieServerDetectInterval="30" ZombieServerDetectResumeDelay="1800" ZombieServerDetectDelayW4="180" ZombieServerDetectIntervalW4="30" ZombieServerDetectResumeDelayW4="180" />
|
||||
<Server ZombieServerDetectDelay="900" ZombieServerDetectResumeDelay="900" ZombieServerDetectConnectDelay="900" ZombieServerDetectLongDelay="900" ZombieServerDetectDelayW4="45" ZombieServerDetectResumeDelayW4="600" ZombieServerDetectConnectDelayW4="135" ZombieServerDetectLongDelayW4="450" />
|
||||
</Contacts>
|
||||
<TrustedDomains>
|
||||
<domain name="bluemountaincards.co.uk" />
|
||||
<domain name="bluemountaincards.com.au" />
|
||||
<domain name="bmamessenger.com" />
|
||||
<domain name="gmarket.co.kr" />
|
||||
<domain name="hotmail.com" />
|
||||
<domain name="imgag.com" />
|
||||
<domain name="meegos.com" />
|
||||
<domain name="msn.com" />
|
||||
<domain name="msads.net" />
|
||||
<domain name="imagine-msn.com" />
|
||||
<domain name="imagine-windowslive.com" />
|
||||
<domain name="kiwee.com" />
|
||||
<domain name="live.com" />
|
||||
<domain name="msnplus.co.kr" />
|
||||
<domain name="wee-mee.com" />
|
||||
<domain name="mypersonalexpression.com" />
|
||||
<domain name="mobilemoney.com" />
|
||||
<domain name="hotmail.co.jp" />
|
||||
<domain name="hotmail.de" />
|
||||
<domain name="hotmail.it" />
|
||||
<domain name="hotmail.fr" />
|
||||
<domain name="hotmail.co.uk" />
|
||||
<domain name="hotmail.com.tr" />
|
||||
<domain name="hotmail.com.ar" />
|
||||
<domain name="hotmail.co.th" />
|
||||
<domain name="ninemsn.com" />
|
||||
<domain name="ninemsn.com.au" />
|
||||
<domain name="joyinter.net" />
|
||||
<domain name="messengervibe.com" />
|
||||
<domain name="messengervibe.net" />
|
||||
<domain name="messengervibe.org" />
|
||||
<domain name="meezone.com" />
|
||||
<domain name="live.jp" />
|
||||
<domain name="excite.co.jp" />
|
||||
<domain name="start.com" />
|
||||
<domain name="msn.com.hk" />
|
||||
<domain name="msn.co.il" />
|
||||
<domain name="msn.co.kr" />
|
||||
<domain name="event-information.jp" />
|
||||
<domain name="msn.mydrivers.com" />
|
||||
<domain name="msn.com.br" />
|
||||
<domain name="im.live.cn" />
|
||||
<domain name="sc.imp.live.com" />
|
||||
<domain name="c.imp.live.com" />
|
||||
<domain name="origindigital.net" />
|
||||
<domain name="laughabits.com" />
|
||||
<domain name="laughabits.net" />
|
||||
<domain name="windowslive.com" />
|
||||
<domain name="gowindowslive.com" />
|
||||
<domain name="msn.com.tw" />
|
||||
<domain name="msn.co.in" />
|
||||
<domain name="www.mobilemoney.com" />
|
||||
<domain name="wall-e.msn.co.uk" />
|
||||
<domain name="walle.msn.co.uk" />
|
||||
<domain name="wall-e.msn.fr" />
|
||||
<domain name="walle.msn.fr" />
|
||||
<domain name="wall-e.msn.be" />
|
||||
<domain name="walle.msn.be" />
|
||||
<domain name="wall-e.fr.msn.be" />
|
||||
<domain name="walle.fr.msn.be" />
|
||||
<domain name="wall-e.msn.nl" />
|
||||
<domain name="walle.msn.nl" />
|
||||
<domain name="wall-e.msn.es" />
|
||||
<domain name="walle.msn.es" />
|
||||
<domain name="wall-e.msn.dk" />
|
||||
<domain name="walle.msn.dk" />
|
||||
<domain name="wall-e.msn.fi" />
|
||||
<domain name="walle.msn.fi" />
|
||||
<domain name="wall-e.msn.no" />
|
||||
<domain name="walle.msn.no" />
|
||||
<domain name="wall-e.msn.se" />
|
||||
<domain name="walle.msn.se" />
|
||||
<domain name="wall-e.msn.de" />
|
||||
<domain name="walle.msn.de" />
|
||||
<domain name="wall-e.msn.it" />
|
||||
<domain name="walle.msn.it" />
|
||||
<domain name="msbrandent.vo.llnwd.net" />
|
||||
<domain name="www.messengerexpressions.com" />
|
||||
<domain name="www.sunsilkgangofgirls.com" />
|
||||
<domain name="messenger.live.de" />
|
||||
<domain name="themepackchooser.windowslivehosting.de" />
|
||||
<domain name="messengermakeover.com" />
|
||||
<domain name="microsoft.com" />
|
||||
<domain name="windowslive.se" />
|
||||
<domain name="messenger-themes.com" />
|
||||
<domain name="visualsearch.msn.com" />
|
||||
<domain name="xbox.com" />
|
||||
<domain name="quebles.com" />
|
||||
<domain name="technodesignip.com" />
|
||||
<domain name="promotion.hk.msn.com" />
|
||||
<domain name="promotion.msn.com.tw" />
|
||||
<domain name="18design.com" />
|
||||
<domain name="egreetings.com" />
|
||||
<domain name="kiwee.com" />
|
||||
<domain name="live.mundijuegos.com" />
|
||||
<domain name="skype.com" />
|
||||
<domain name="hiden.cc"/>
|
||||
<domain name="ugnet.gay"/>
|
||||
<domain name="crosstalk.im"/>
|
||||
<domain name="ctsrv.gay"/>
|
||||
</TrustedDomains>
|
||||
<ErrorResponseTable>
|
||||
<Feature type="0" name="Login">
|
||||
<Entry hr="*" action="3" />
|
||||
<Entry hr="0x81000605" action="3" />
|
||||
<Entry hr="0x80048849" action="5" />
|
||||
<Entry hr="0x8004882A" action="5" />
|
||||
<Entry hr="0x80048800" action="5" />
|
||||
<Entry hr="0x8004889C" action="5" />
|
||||
<Entry hr="0x80048831" action="5" />
|
||||
<Entry hr="0x81000306" action="5" />
|
||||
<Entry hr="0x80048862" action="5" />
|
||||
<Entry hr="0x800488EB" action="5" />
|
||||
<Entry hr="0x80048848" action="5" />
|
||||
<Entry hr="0x80004002" action="3" />
|
||||
<Entry hr="0x80004004" action="3" />
|
||||
<Entry hr="0x80004005" action="3" />
|
||||
<Entry hr="0x8000402A" action="3" />
|
||||
<Entry hr="0x8000FFFF" action="3" />
|
||||
<Entry hr="0x8001012E" action="3" />
|
||||
<Entry hr="0x80040200" action="3" />
|
||||
<Entry hr="0x80048051" action="3" />
|
||||
<Entry hr="0x80048820" action="5" />
|
||||
<Entry hr="0x80048823" action="3" />
|
||||
<Entry hr="0x80070002" action="3" />
|
||||
<Entry hr="0x80070005" action="3" />
|
||||
<Entry hr="0x8007000E" action="3" />
|
||||
<Entry hr="0x80070057" action="3" />
|
||||
<Entry hr="0x8007007E" action="3" />
|
||||
<Entry hr="0x800702E4" action="3" />
|
||||
<Entry hr="0x800706BA" action="3" />
|
||||
<Entry hr="0x800706BE" action="3" />
|
||||
<Entry hr="0x80071392" action="3" />
|
||||
<Entry hr="0x80072745" action="3" />
|
||||
<Entry hr="0x80072746" action="3" />
|
||||
<Entry hr="0x80072EE2" action="3" />
|
||||
<Entry hr="0x80072EF3" action="3" />
|
||||
<Entry hr="0x80072EFD" action="3" />
|
||||
<Entry hr="0x80072EFF" action="3" />
|
||||
<Entry hr="0x80072F06" action="3" />
|
||||
<Entry hr="0x80072F7D" action="3" />
|
||||
<Entry hr="0x800C013E" action="3" />
|
||||
<Entry hr="0x80191002" action="3" />
|
||||
<Entry hr="0x8100030D" action="3" />
|
||||
<Entry hr="0x81000314" action="3" />
|
||||
<Entry hr="0x81000362" action="3" />
|
||||
<Entry hr="0x81000378" action="3" />
|
||||
<Entry hr="0x81000395" action="3" />
|
||||
<Entry hr="0x85AE000B" action="3" />
|
||||
<Entry hr="0x85AE000F" action="3" />
|
||||
<Entry hr="0x85AE001D" action="3" />
|
||||
<Entry hr="0x85AE0022" action="3" />
|
||||
<Entry hr="0x85AE0024" action="3" />
|
||||
<Entry hr="0x85AE0027" action="3" />
|
||||
<Entry hr="0x85AE003C" action="3" />
|
||||
<Entry hr="0x85AE0053" action="3" />
|
||||
<Entry hr="0x8E5E0152" action="3" />
|
||||
<Entry hr="0x8E5E0158" action="3" />
|
||||
<Entry hr="0x8E5E0211" action="3" />
|
||||
<Entry hr="0x8E5E0220" action="3" />
|
||||
<Entry hr="0x8E5E0226" action="3" />
|
||||
<Entry hr="0x8E5E03FE" action="3" />
|
||||
<Entry hr="0x8E5E0408" action="3" />
|
||||
<Entry hr="0x8E5E05F6" action="3" />
|
||||
<Entry hr="0x8E5E0710" action="3" />
|
||||
<Entry hr="0x8E5E0713" action="3" />
|
||||
</Feature>
|
||||
<Feature type="2" name="MapFile">
|
||||
<Entry hr="0x810003F1" action="3" />
|
||||
<Entry hr="0x810003F6" action="3" />
|
||||
</Feature>
|
||||
<Feature type="3" name="P2P">
|
||||
<Entry hr="0x82000016" action="3" />
|
||||
<Entry hr="0x82000017" action="3" />
|
||||
<Entry hr="0x82000019" action="3" />
|
||||
<Entry hr="0x8200001b" action="3" />
|
||||
<Entry hr="0x8200001d" action="3" />
|
||||
<Entry hr="0x8200001e" action="3" />
|
||||
<Entry hr="0x82000024" action="3" />
|
||||
<Entry hr="0x82000026" action="3" />
|
||||
</Feature>
|
||||
<Feature type="5" name="VoiceVideo">
|
||||
<Entry hr="*" action="3" />
|
||||
</Feature>
|
||||
</ErrorResponseTable>
|
||||
<USBDevices>
|
||||
<Device VID="0x045e" PID="0x0719" />
|
||||
<Device VID="0x045e" PID="0x070F" />
|
||||
<Device VID="0x045e" PID="0x0772" />
|
||||
<Device VID="0x041e" PID="0x4080" />
|
||||
<Device VID="0x041e" PID="0x4083" />
|
||||
<Device VID="0x041e" PID="0x4088" />
|
||||
<Device VID="0x041e" PID="0x4087" />
|
||||
<Device VID="0x041e" PID="0x4086" />
|
||||
</USBDevices>
|
||||
<VoiceVideo>
|
||||
<Log PeerLogDisable="1" />
|
||||
</VoiceVideo>
|
||||
<CirclesWeb General="https://crosstalk.im/circles/$CIRCLECID$/settings/" General-SiteId="73625" Management="https://crosstalk.im/circles/$CIRCLECID$/settings/" Management-SiteId="73625" Membership="https://crosstalk.im/circles/$CIRCLECID$/settings/" Membership-SiteId="73625" Leave="https://crosstalk.im/circles/$CIRCLECID$/settings/" Leave-SiteId="73625" Disc="https://discord.gg/dumJwXTPxX" />
|
||||
<AnonymousIMSettings>
|
||||
<SettingsPage URL="http://settings.messenger.live.com/applications/WebSettings.aspx" SiteID="76215" />
|
||||
</AnonymousIMSettings>
|
||||
<SocialNews>
|
||||
<ActivityDisplay PageSize="50" MaxItems="100" />
|
||||
<AlbumDisplay UnderlayImages="2" LeadUnderlayImages="2" />
|
||||
<IdleRefreshSecs Typing="180" Scrolling="10" />
|
||||
<Comments MaxDisplayItems="20" MaxInputLen="512" />
|
||||
<MainWindow>
|
||||
<AskIfLessThanXContacts>5</AskIfLessThanXContacts>
|
||||
<MaxSecsToShowSyncHint>10</MaxSecsToShowSyncHint>
|
||||
</MainWindow>
|
||||
<ServerSync>
|
||||
<FetchImagesForActivities Minimized="10" Visible="1000" />
|
||||
</ServerSync>
|
||||
<EXP_URL>http://ro-test.exp.glbdns.microsoft.com/</EXP_URL>
|
||||
</SocialNews>
|
||||
<SAC SiteID="73625" />
|
||||
<InlineFlashEnabled>1</InlineFlashEnabled>
|
||||
<Badgewhitelist>
|
||||
<Badge hash="9lfw5+i0VZl9Vg7y5Un2OlJmtfs=" />
|
||||
<Badge hash="37ryp9MdaDZjOiv4goIAeWK0EX8=" />
|
||||
<Badge hash="bg4dyWk7FEhW5vh3FrGxr7xw+mg=" />
|
||||
<Badge hash="h8tLlwWUls1wgiFYbjVZBzs5mW0=" />
|
||||
<Badge hash="4rzC8sYjtzAbzVYZcB4wvxMhbVg=" />
|
||||
<Badge hash="vVenvAzv1l+nEMf62r5+n6DCIn0=" />
|
||||
<Badge hash="vjJ3jVT690ORqHHhBgrYsMK5DOw=" />
|
||||
<Badge hash="Yxv7pB8BkosiGNn0oGsXryPkGwk=" />
|
||||
<Badge hash="mChdOIxTCBtxBPa+jrB8wwUs5gw=" />
|
||||
<Badge hash="4Dyw5JiNMjquWPruSAHEFwYq/Gs=" />
|
||||
<Badge hash="D9vI4Cg6dxswaI8CWe4OyBnLe9I=" />
|
||||
<Badge hash="ZPa3APVAtDXHZWkXMuqvHJ7d1Oc=" />
|
||||
<Badge hash="6on/QiZ+oCinkJoZ46kJUUuOJOU=" />
|
||||
<Badge hash="m1RNenPjuuPi5K9J8URF+s1t1RA=" />
|
||||
<Badge hash="IOGiVO3tySKcci62UN5cm3HWpu8=" />
|
||||
<Badge hash="BozySP9KXMkBFD7yhU5dtFk7uhY=" />
|
||||
<Badge hash="QvaYObfDCYnqJ7PY1xehXK1h7Vg=" />
|
||||
<Badge hash="ev1TxfBsXT71YaxkwJ1qLWxTvqM=" />
|
||||
<Badge hash="AVL5/uKTExH58MBBif46FwDeIlI=" />
|
||||
<Badge hash="zI4RpERkOV8EIPe8GgVuMP/zsAU=" />
|
||||
<Badge hash="w+OPDFW9zUCophcUHzCD9vJkWPo=" />
|
||||
<Badge hash="LTSltKJuhiAXwEnYnhdhlGwCeh4=" />
|
||||
<Badge hash="Q35ITEMaQZoU6HaJ1O0f/B0t9gs=" />
|
||||
<Badge hash="4MFANR59I364LscZCocBADKMaUU=" />
|
||||
<Badge hash="XnMhTovzcp1yO7TI5IVKLHJPZno=" />
|
||||
<Badge hash="qt7d1rBxs8dAOn7iY0HsxITbLXw=" />
|
||||
<Badge hash="d5Z7ZpzFS2lWJprExnYdZdH0vn4=" />
|
||||
<Badge hash="UT1nTu3LYZwfa2TFnZCKrn+vaFU=" />
|
||||
<Badge hash="nJsMh4U2loNkfYmdB7TEMdLieu8=" />
|
||||
<Badge hash="XA9SbvUp+iqzFEUWtQpqna7PrC8=" />
|
||||
<Badge hash="BazH3YqwlvzyhcUkjYGCf+qIyKg=" />
|
||||
<Badge hash="M8xU6J839spw4iyQFJjTTs6WB84=" />
|
||||
<Badge hash="8CLDN2ByqlbeiGHlwQyaAytHQ58=" />
|
||||
<Badge hash="0qbNS31d6WpD5MMMzlWqAOnuo2U=" />
|
||||
<Badge hash="4RvEU8H6/wZVf9EcET7lqDkFtT4=" />
|
||||
<Badge hash="egsg4TWsu8qDnSCgvr7iugcG0LM=" />
|
||||
<Badge hash="YpzN8KhlfuhKwFPJ/7EsMmLAbuk=" />
|
||||
<Badge hash="MgAjD7JMuFyNFfd4NnZ1Ki+o2pU=" />
|
||||
<Badge hash="uiJWWP/ub6TK98UTEQ5qcDboodo=" />
|
||||
<Badge hash="WPaadPRXlBRaxt3hOp2NlM6qbMg=" />
|
||||
<Badge hash="cDbb4pvKRfY4rMrQ5nkYrWzRgGA=" />
|
||||
<Badge hash="W5oSJU3k59GI5RbJnZl6Qf6pH08=" />
|
||||
<Badge hash="/PU6/QRwosJ7qr6KmYsrqehvrJ0=" />
|
||||
<Badge hash="v9sMUux76smDtxJVy1LeUEhLHRc=" />
|
||||
<Badge hash="OKXA2XP1372wcWRDsIccDfLu4sw=" />
|
||||
<Badge hash="7EqLZG50DDPN8wrbo5cZRylxbxA=" />
|
||||
<Badge hash="C7sxFpDuIksjfGHUeJ8VCT0skuk=" />
|
||||
<Badge hash="ZVsu2eb55OvHBb8vMaqJuTk04bM=" />
|
||||
<Badge hash="eCdqiMJSKjhAk4DAnyual0GTEao=" />
|
||||
<Badge hash="br3uGnBy/3iFUXzRXYcV83k0YEo=" />
|
||||
<Badge hash="LNYcLtJv0uzfOzGqdGeahV6K6M8=" />
|
||||
<Badge hash="f9T6bHBmsNSDBA6YXUI+Ev1d1a8=" />
|
||||
<Badge hash="iAwbvV2Fpl2B1atHWSCeqUxBuQ0=" />
|
||||
<Badge hash="rSWxtjTwQuOGdQ6icpgCygnC3Cw=" />
|
||||
<Badge hash="vtFONiM9ZzlcBs6vCdFe0MvAbvM=" />
|
||||
<Badge hash="3Y6LxMK+gDrjna/wbB1YJhjpgSw=" />
|
||||
<Badge hash="zQsxtCr0XMSO5uR0Sw+qc+bVwmk=" />
|
||||
<Badge hash="9WqtJjDlJNleDRs5270wA941Sn0=" />
|
||||
<Badge hash="hib0Cd2LaqUCE2GhKLZSKuK4Vd4=" />
|
||||
<Badge hash="e6aj74s8QJdxk8j7sVFNGpjISUM=" />
|
||||
<Badge hash="BsOFlAwMS+33I7XUYZ8GtyAKbpw=" />
|
||||
<Badge hash="rYUDkUnRKKhT1fYVQ+HYTGSR0f0=" />
|
||||
<Badge hash="mt/zjgXkxyAAsuysl7dwQJrtCCs=" />
|
||||
<Badge hash="9QWMRHSWliBE0Nml7izqsmQueuI=" />
|
||||
<Badge hash="Af4UlxCI9Q4E69cu3gSnT8QM+J0=" />
|
||||
<Badge hash="vs+XlfnMXk9XW2h36X2h3B6revc=" />
|
||||
<Badge hash="XyqywanZEWiRA5lm9qkkoVgvQ0E=" />
|
||||
<Badge hash="QAJsPE15szOII/tSxPpAFrxNk1Y=" />
|
||||
<Badge hash="STIkOlYxsAG60k6tfzFrKZ0OEZc=" />
|
||||
<Badge hash="ddNPDt8PhYnlMZ40k9vCY0ykABM=" />
|
||||
<Badge hash="PeQELvXViAhtZ/zoTsPdAkD+Q4M=" />
|
||||
<Badge hash="T62weZK79pgV7mlqdbitG/Dy454=" />
|
||||
<Badge hash="wil7kcephpQDw1uT4vHaeTBWRlc=" />
|
||||
<Badge hash="xqrldsPAEO0CER+ThpPWeU6yFIw=" />
|
||||
<Badge hash="XIcOrK2whUy08x/Qv1WI76a6BPA=" />
|
||||
<Badge hash="rAakWEDEg7wQcYCBGq7/bIjYao8=" />
|
||||
<Badge hash="B6X7uu8jrk2SBzS+8Q0Ipl4hS3k=" />
|
||||
<Badge hash="93YzxkXPI9HYwFsbUndZtkMbWe0=" />
|
||||
<Badge hash="+nApQVaEOLh3BAnltLW3JNaExcw=" />
|
||||
<Badge hash="qJ6iPKlEjUoZseAbwTxNKlS+DQA=" />
|
||||
<Badge hash="wdp3RGOgtGQ+5sq1c4hVU1MB1dI=" />
|
||||
<Badge hash="+TIl/KYEVwr+JF/nNFGXEWvhp9I=" />
|
||||
<Badge hash="/O6no1Wc+VwDvk1V4tneT1rVN68=" />
|
||||
<Badge hash="zbfGlhssMmB5IPvhBQMzK7n6PK4=" />
|
||||
<Badge hash="KQceiyW0oVyLz2x3aw6ccEKHrcQ=" />
|
||||
<Badge hash="+s2/b8lxTyuJ9fydnis5szl9mmI=" />
|
||||
<Badge hash="Hu4DE0KpCc/QcWniA7YsZaIbd4E=" />
|
||||
<Badge hash="PWNqw7+xphOvbi1hPgTgKuGL5Ds=" />
|
||||
<Badge hash="wQA4IOu5eFhYnrOz/jpZ3mf10Vw=" />
|
||||
<Badge hash="sU1+y0KfjoeDQq7Ilk2d/Sltoc8=" />
|
||||
<Badge hash="3pViUUmJ6Qngao9ZBz0iJGW05W8=" />
|
||||
<Badge hash="P6X4JKOsvzlCdxSuVuZQ+oQjFn8=" />
|
||||
<Badge hash="rc5FO/sPiH5RrVGhpxTe57Rvf5s=" />
|
||||
<Badge hash="PdCll4Hu1FBQCfuxTET6WK4YqvU=" />
|
||||
<Badge hash="aDip/uLZFXFuQUWDL9Ez+js/Xlg=" />
|
||||
<Badge hash="gBo+51w4rmvpwXMHKeB/9I+5WO8=" />
|
||||
<Badge hash="spqOkvjnFubFQqSxKGEY6pylOKo=" />
|
||||
</Badgewhitelist>
|
||||
<HotmailUrls>
|
||||
<BaseUrlFormat>http://mail.live.com/?rru=%1</BaseUrlFormat>
|
||||
<InboxTarget>inbox</InboxTarget>
|
||||
<SendMailTarget>compose</SendMailTarget>
|
||||
<SendMailFormat>?to=%1</SendMailFormat>
|
||||
<ViewMessageTarget>getmsg</ViewMessageTarget>
|
||||
<ViewMessageFormat>?msg=%1</ViewMessageFormat>
|
||||
</HotmailUrls>
|
||||
<HwBlockList Version="9">
|
||||
<List Application="0" Version="0">
|
||||
<Entry Flags="1" Options="1" VendorId="8086" DeviceId="8108" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="00FA" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="00FB" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="00FC" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="00FD" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="00FE" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0301" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0302" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0308" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0309" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0311" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0312" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0314" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="031A" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="031B" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="031C" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0320" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0321" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0322" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0323" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0324" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0325" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0326" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0327" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0328" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="032A" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="032B" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="032C" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="032D" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0330" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0331" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0332" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0333" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0334" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0338" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="033F" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0341" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0342" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0343" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0344" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0347" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="0348" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="034C" />
|
||||
<Entry Flags="1" Options="1" VendorId="10DE" DeviceId="034E" />
|
||||
<Entry Flags="0" Options="2" VendorId="1002" />
|
||||
<Entry Flags="1" Options="4" VendorId="8086" DeviceId="2992" />
|
||||
<Entry Flags="1" Options="8" VendorId="8086" DeviceId="2A42" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="3154" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="3e54" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4147" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="3154" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4147" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="414b" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4154" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4155" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4156" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4157" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4a4d" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4c58" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4c66" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4e47" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4e4b" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4e54" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4e56" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="4e67" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5148" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5464" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5550" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5551" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5552" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5554" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5571" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="564a" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="564b" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5b64" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5b65" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5b74" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5b75" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5d49" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5d50" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5e48" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="5e49" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7103" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7104" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7105" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7106" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7124" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7152" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7153" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7172" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="7173" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="71c4" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="71d2" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="71d4" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="71f2" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="940a" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="940b" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="940f" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="9489" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="9511" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="958c" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="958d" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="9595" />
|
||||
<Entry Flags="1" Options="1" VendorId="1002" DeviceId="95cc" />
|
||||
<Entry Flags="2" Options="1" VendorId="8086" Version="8.15.10.1749" />
|
||||
<Entry Flags="4" Options="1" VendorId="10DE" Version="8.17.12.8026" />
|
||||
<Entry Flags="10" Options="1" VendorId="8086" Minimum="8.15.10.2104" Version="8.15.10.2142" />
|
||||
<Entry Flags="1" Options="1" VendorId="1414" DeviceId="008c" />
|
||||
</List>
|
||||
<List Application="1" Version="0">
|
||||
<Entry Flags="0" Options="2" VendorId="1002" />
|
||||
<Entry Flags="1" Options="1" VendorId="8086" DeviceId="8108" />
|
||||
<Entry Flags="1" Options="4" VendorId="8086" DeviceId="2992" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0116" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0106" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0102" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0126" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0122" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="0112" Version="8.15.10.2321" />
|
||||
<Entry Flags="3" Options="1" VendorId="8086" DeviceId="010a" Version="8.15.10.2321" />
|
||||
<Entry Flags="4" Options="1" VendorId="10DE" Version="8.17.12.8562" />
|
||||
<Entry Flags="10" Options="1" VendorId="8086" Minimum="8.15.10.2104" Version="8.15.10.2142" />
|
||||
</List>
|
||||
</HwBlockList>
|
||||
</Simple>
|
||||
<AbchCfg>
|
||||
<abchconfig>
|
||||
<url>https://ctsvcs.addressbook.ugnet.gay/abservice.asmx</url>
|
||||
</abchconfig>
|
||||
</AbchCfg>
|
||||
<AdMainConfig>
|
||||
<AdDownloadTimeInMinutes>120</AdDownloadTimeInMinutes>
|
||||
<AdMainCfg>http://ctsvcs.advertising.ugnet.gay/ads/banner</AdMainCfg>
|
||||
</AdMainConfig>
|
||||
<AdPhoneConfig>http://ctsvcs.advertising.ugnet.gay/ads/banner</AdPhoneConfig>
|
||||
<LocalizedConfig Market="en-US">
|
||||
<AdMainConfig>
|
||||
<AdBanner20URL Refresh="390">http://ctsvcs.advertising.ugnet.gay/ads/banner</AdBanner20URL>
|
||||
<AdBanner300URL Refresh="390" FooterPane="AlwaysShown">http://ctsvcs.advertising.ugnet.gay/ads/banner-lg</AdBanner300URL>
|
||||
<ConvoWinAd AdVisible="420" FooterPane="CollapsibleAndHideable" />
|
||||
<ConvoWinAdBannerURL>http://ctsvcs.advertising.ugnet.gay/ads/banner</ConvoWinAdBannerURL>
|
||||
<StdAd AdVisible="60" VideoVisible="120" VideoDldIntvl="0">
|
||||
<VideoFeeds FeedsListURL="http://ctsvcs.advertising.ugnet.gay/svcs/msn-video-feeds/"/>
|
||||
</StdAd>
|
||||
<TextAdRotation>420</TextAdRotation>
|
||||
<TextAdRefresh>1</TextAdRefresh>
|
||||
<TextAdServer>https://ctsvcs.advertising.ugnet.gay/ads/txt</TextAdServer>
|
||||
<Window Size="680" />
|
||||
</AdMainConfig>
|
||||
<AppDirConfig>
|
||||
<AppDirPageURL>https://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/Directory.aspx?L=en-us</AppDirPageURL>
|
||||
<AppDirSeviceURL>https://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
|
||||
<AppDirVersionURL>https://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
|
||||
</AppDirConfig>
|
||||
<AVPrerollAd FetchTimeout="6900" IntroLength="3000" MinAdLength="7000" URL="http://rad.msn.com/ADSAdClient31.dll?GetAd=&PG=IMUSV1" />
|
||||
<AVPrerollAd2 FetchTimeout="6900" IntroLength="0" MinAdLength="7000" URL="http://rad.msn.com/ADSAdClient31.dll?GetAd=&PG=IMUVD1" />
|
||||
<BuyWebcamLink URL="http://www.logitech.com/msn/index.cfm?c=US&l=EN" />
|
||||
<Contacts>
|
||||
<ABPendingRequests>
|
||||
<SiteId>73625</SiteId>
|
||||
<height>672</height>
|
||||
<IncludeSNRequests>true</IncludeSNRequests>
|
||||
<width>808</width>
|
||||
<urlcid>http://profile.live.com/invites</urlcid>
|
||||
</ABPendingRequests>
|
||||
<EditAlertNotificationOptions>
|
||||
<url>http://alerts.live.com/Alerts/MyAlerts.aspx</url>
|
||||
</EditAlertNotificationOptions>
|
||||
<EditMyLiveContactProfile>
|
||||
<url>http://profile.live.com/details/edit</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyLiveContactProfile>
|
||||
<EditMyProfile>
|
||||
<url>http://profile.live.com/details</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyProfile>
|
||||
<EditMyName>
|
||||
<url>http://profile.live.com/details/edit/name</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyName>
|
||||
<EditMyPrivacySettings>
|
||||
<url>http://profile.live.com/privacy</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditMyPrivacySettings>
|
||||
<EditSocialNotificationOptions>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/options/notifications</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditSocialNotificationOptions>
|
||||
<EditWLPersonURL>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/details/Edit </url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditWLPersonURL>
|
||||
<EditNonWLPersonURL>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/details/Edit/?ContactId=%2 </url>
|
||||
<SiteId>73625</SiteId>
|
||||
</EditNonWLPersonURL>
|
||||
<Export>
|
||||
<url>http://mail.live.com/?rru=options?subsection=26</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</Export>
|
||||
<Import>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/connect</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</Import>
|
||||
<Marketplace>
|
||||
<url>http://expo.live.com/BuddyProfile.aspx?cid=</url>
|
||||
<SiteId>67227</SiteId>
|
||||
</Marketplace>
|
||||
<MessengerInvite>
|
||||
<url>https://profile.live.com/%1/connect/send?email=%2</url>
|
||||
<urlcid>https://profile.live.com/%1/connect/send?cid=%2</urlcid>
|
||||
<SiteId>73625</SiteId>
|
||||
</MessengerInvite>
|
||||
<MutualFriends>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/friends/common/</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</MutualFriends>
|
||||
<PeopleSearch>
|
||||
<url>http://home.live.com/search</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</PeopleSearch>
|
||||
<Profile>
|
||||
<url>https://profile.live.com/cid-%1!16.16I64X!</url>
|
||||
<urlcid>https://profile.live.com/cid-%1!16.16I64X!</urlcid>
|
||||
<urlcid2>http://cid-%1!16.16I64X!.profile.live.com</urlcid2>
|
||||
<SiteId>73625</SiteId>
|
||||
</Profile>
|
||||
<LimitedAccessHelp>
|
||||
<url>http://explore.live.com/windows-live-privacy-limited-access-ui</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</LimitedAccessHelp>
|
||||
<SNHip>
|
||||
<url>http://cid-%1!16.16I64X!.profile.live.com/SecurityCheck/?oid=12&usercid=%3&QRCode=SocialNetworkInvites</url>
|
||||
<SiteId>73625</SiteId>
|
||||
</SNHip>
|
||||
<SNInvites>
|
||||
<url>http://cid-%1.profile.live.com/connect/Messenger.aspx?Email=%2</url>
|
||||
<urlcid>http://cid-%1.profile.live.com/connect/Messenger.aspx?cid=0x%2</urlcid>
|
||||
<SiteId>73625</SiteId>
|
||||
</SNInvites>
|
||||
<ViewPhotosWLPersonURL>
|
||||
<url>http://cid-%1!16.16I64X!.photos.live.com </url>
|
||||
<SiteId>73625</SiteId>
|
||||
</ViewPhotosWLPersonURL>
|
||||
<ViewMapEnabled>true</ViewMapEnabled>
|
||||
</Contacts>
|
||||
<ContactCard>
|
||||
<AddToMySpaceSiteId>73625</AddToMySpaceSiteId>
|
||||
<AddToMySpaceUrl>http://social.ugnet.gay/?addblogentry=true&mkt=en-us</AddToMySpaceUrl>
|
||||
<ContactCardDisabled>false</ContactCardDisabled>
|
||||
<CreateSpaceSiteId>73625</CreateSpaceSiteId>
|
||||
<CreateSpaceUrl>http://social.ugnet.gay</CreateSpaceUrl>
|
||||
<GetItemVerUrl>http://storage.msn.com/storageservice/schematizedstore.asmx</GetItemVerUrl>
|
||||
<GetXmlFeedUrl>http://cc.services.social.ugnet.gay/contactcard/contactcardservice.asmx</GetXmlFeedUrl>
|
||||
<GetXmlFeedRpsUrl>http://cc.services.social.ugnet.gay/contactcard/contactcardservice.asmx</GetXmlFeedRpsUrl>
|
||||
<GetXmlFeedRpsCidUrl>http://cid-%1!16.16I64X!.cc.services.social.ugnet.gay/contactcard/contactcardservice.asmx</GetXmlFeedRpsCidUrl>
|
||||
<MySpaceSiteId>73625</MySpaceSiteId>
|
||||
<MySpaceUrl>http://social.ugnet.gay</MySpaceUrl>
|
||||
<SpaceBaseSiteId>73625</SpaceBaseSiteId>
|
||||
<SpaceBaseUrl>http://social.ugnet.gay</SpaceBaseUrl>
|
||||
<SpaceIntegrationEnabled>true</SpaceIntegrationEnabled>
|
||||
</ContactCard>
|
||||
<EditorialConfig>http://www.msn.com/infopane/messenger.armx</EditorialConfig>
|
||||
<FlashUpgradeURL>http://storage.ugnet.gay/crosstalk-dist/client/all/tools/flashplayer_10_3r183_48_winax.exe</FlashUpgradeURL>
|
||||
<FSS>
|
||||
<SiteID>71659</SiteID>
|
||||
<AddBuddyURL>https://fss.live.com/krl/AddContact.aspx</AddBuddyURL>
|
||||
</FSS>
|
||||
<GLinkMarket v="en_us" />
|
||||
<Highlight>
|
||||
<FirstRunURLSet>
|
||||
<FirstRunURL id="1">
|
||||
<url id="1">http://c.imp.live.com/content/dam/imp/surfaces/highlights/skype/en/wave3.html</url>
|
||||
</FirstRunURL>
|
||||
</FirstRunURLSet>
|
||||
<MinDaysBtwFirstRunLaunches>1</MinDaysBtwFirstRunLaunches>
|
||||
<MinDaysBtwFirstRecurringLaunches>7</MinDaysBtwFirstRecurringLaunches>
|
||||
<RecurringHighlightURL>
|
||||
<url>http://c.imp.live.com/content/dam/imp/surfaces/highlights/skype/en/wave3.html</url>
|
||||
</RecurringHighlightURL>
|
||||
<Wave val="4">
|
||||
<FirstRunURLSet>
|
||||
<FirstRunURL id="1">
|
||||
<url id="1">http://c.imp.live.com/content/dam/imp/surfaces/highlights/skype/en/wave4.html</url>
|
||||
</FirstRunURL>
|
||||
</FirstRunURLSet>
|
||||
<RecurringHighlightURL>
|
||||
<url>http://c.imp.live.com/content/dam/imp/surfaces/highlights/skype/en/wave4.html</url>
|
||||
</RecurringHighlightURL>
|
||||
</Wave>
|
||||
</Highlight>
|
||||
<IntroConfig />
|
||||
<LiveFolders UpsellMessageId="1" />
|
||||
<Marketplace>
|
||||
<General URL="http://www.microsoft.com/windowslivedevices/marketplace/default.aspx" />
|
||||
<Webcam URL="http://www.microsoft.com/windowslivedevices/marketplace/default.aspx" />
|
||||
</Marketplace>
|
||||
<MessengerBlogURL>https://crosstalk.im/blog</MessengerBlogURL>
|
||||
<MobileMessaging Mode="RPPNew" CarrierList="" CrossSell="1" CharMax="140" MainWindowButton="true" OperatorPage="http://get.live.com/messenger/mobile" ValidRoutes="US;CA" />
|
||||
<MSNSearch>
|
||||
<DesktopInstallURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</DesktopInstallURL>
|
||||
<ImagesURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=images</ImagesURL>
|
||||
<NearMeURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</NearMeURL>
|
||||
<NewsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$+news&ia=news</NewsURL>
|
||||
<PeopleSearchURL>http://home.live.com/search?query=$QUERY$</PeopleSearchURL>
|
||||
<PeopleSearchSiteID>73625</PeopleSearchSiteID>
|
||||
<SearchKidsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchKidsURL>
|
||||
<SearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchURL>
|
||||
<SharedSearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL>
|
||||
<SharedSearchURL2>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL2>
|
||||
</MSNSearch>
|
||||
<MsnTodayConfig>
|
||||
<MsnTodaySiteID>6528</MsnTodaySiteID>
|
||||
<MsnTodayURL>https://today.msgrsvcs.ctsrv.gay/start?windowslive=1</MsnTodayURL>
|
||||
<Flags>2</Flags>
|
||||
</MsnTodayConfig>
|
||||
<MusicIntegration URL="https://www.last.fm/search/tracks?q=$ARTIST$+$TITLE$"/>
|
||||
<PartnerFeeds>
|
||||
<Feed Name="MSN" URL="https://today.msgrsvcs.ctsrv.gay/start?windowslive=1" Owner="MSN" />
|
||||
<Feed Name="GAMES" URL="http://windowsphone.xbox.com/en-US/MessengerGames/TabConfig" Owner="GAMES" />
|
||||
</PartnerFeeds>
|
||||
<PartnerFeedsSSL>
|
||||
<Feed Name="MSN" URL="https://today.msgrsvcs.ctsrv.gay/start?windowslive=1" Owner="MSN" />
|
||||
<Feed Name="GAMES" URL="http://windowsphone.xbox.com/en-US/MessengerGames/TabConfig" Owner="GAMES" />
|
||||
</PartnerFeedsSSL>
|
||||
<PE Tracking="http://trackingw4.technodesignip.com/?ContentID=$ContentID$&Click=$Click$" />
|
||||
<PremiumAV Visibility="1" />
|
||||
<PSTNOut Hidden="0" />
|
||||
<PublicFederated>
|
||||
<YahooNetwork Enabled="true" OfflineIM="true" />
|
||||
</PublicFederated>
|
||||
<ReportAbuse>
|
||||
<ReportAbuseSID />
|
||||
<ReportAbuseURL>http://support.live.com/default.aspx?productkey=wlmessengerabuse</ReportAbuseURL>
|
||||
<BiciReportAbuseApiUrl>https://home.live.com/handlers/ReportAbuse.mvc</BiciReportAbuseApiUrl>
|
||||
<BiciReportAbuseApiServiceTarget>social.ugnet.gay</BiciReportAbuseApiServiceTarget>
|
||||
</ReportAbuse>
|
||||
<RL>
|
||||
<ViewProfileURL>http://g.msn.com/5meen_us/106?%1&Plcid=%2!hs!&%3&Country=%4!hs!&BrandID=%5&passport=%6</ViewProfileURL>
|
||||
</RL>
|
||||
<SDrive Enabled="true" />
|
||||
<ServiceAwareness>
|
||||
<FindMoreUrl>http://cid-%1!16.16I64X!.profile.live.com/Services/</FindMoreUrl>
|
||||
<FindMoreSiteId>73625</FindMoreSiteId>
|
||||
<ManageUrl>http://cid-%1!16.16I64X!.profile.live.com/Services/?view=manage</ManageUrl>
|
||||
<ManageSiteId>73625</ManageSiteId>
|
||||
<ServicePartnerUrl>http://cid-%1!16.16I64X!.profile.live.com/Services/Add.aspx?appid=%2</ServicePartnerUrl>
|
||||
<ServicePartnerSiteId>73625</ServicePartnerSiteId>
|
||||
<WindowsLiveUrl>http://cid-%1!16.16I64X!.profile.live.com/whatsnewsettings</WindowsLiveUrl>
|
||||
<WindowsLiveSiteId>73625</WindowsLiveSiteId>
|
||||
</ServiceAwareness>
|
||||
<SocialNews>
|
||||
<EventUrl>http://cid-%1!16.16I64X!.events.live.com</EventUrl>
|
||||
<EventSiteID>73625</EventSiteID>
|
||||
<GroupUrl>http://cid-%1!16.16I64X!.groups.live.com</GroupUrl>
|
||||
<GroupSiteID>73625</GroupSiteID>
|
||||
<MainUrl>http://home.live.com/whatsnew.aspx</MainUrl>
|
||||
<MainSiteID>73625</MainSiteID>
|
||||
<OptionsUrl>http://profile.live.com/whatsnewsettings/</OptionsUrl>
|
||||
<OptionsSiteID>73625</OptionsSiteID>
|
||||
<HideUserFirstPartyUrl>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?cid=%2&name=%3</HideUserFirstPartyUrl>
|
||||
<HideUserFirstPartyUrl2>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?cid=%2&name=%3</HideUserFirstPartyUrl2>
|
||||
<HideUserFirstPartySiteID>73625</HideUserFirstPartySiteID>
|
||||
<HideUserThirdPartyUrl>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?externalSourceId=%2&externalObjectId=%3&name=%4</HideUserThirdPartyUrl>
|
||||
<HideUserThirdPartyUrl2>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?externalSourceId=%2&externalObjectId=%3&name=%4</HideUserThirdPartyUrl2>
|
||||
<HideUserThirdPartySiteID>73625</HideUserThirdPartySiteID>
|
||||
<HideUserEmailUrl>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?email=%2&name=%3</HideUserEmailUrl>
|
||||
<HideUserEmailUrl2>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?email=%2&name=%3</HideUserEmailUrl2>
|
||||
<HideUserEmailSiteID>73625</HideUserEmailSiteID>
|
||||
<HideServiceUrl>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?appid=%2</HideServiceUrl>
|
||||
<HideServiceUrl2>http://cid-%1.profile.live.com/WhatsNew/HideUpdates?appid=%2</HideServiceUrl2>
|
||||
<HideServiceSiteID>73625</HideServiceSiteID>
|
||||
<UserUrl>http://cid-%1!16.16I64X!.profile.live.com</UserUrl>
|
||||
<UserSiteID>73625</UserSiteID>
|
||||
</SocialNews>
|
||||
<SocialToast>
|
||||
<SuppressedEmailDomain>windowslivemail.com</SuppressedEmailDomain>
|
||||
</SocialToast>
|
||||
<TabConfig>
|
||||
<RowNumber>1</RowNumber>
|
||||
<slots>
|
||||
{% for tab in tabs %}
|
||||
<URL id="{{ tab.id }}">
|
||||
https://ctsvcs.advertising.ugnet.gay/svcs/tab={{ tab.id }}
|
||||
</URL>
|
||||
{% endfor %}
|
||||
</slots>
|
||||
</TabConfig>
|
||||
<TermsOfUse>
|
||||
<TermsOfUseSID>956</TermsOfUseSID>
|
||||
<TermsOfUseURL>https://crosstalk.im/tos</TermsOfUseURL>
|
||||
</TermsOfUse>
|
||||
<UPUX>
|
||||
<Product id="8" PartnerID="TD" ProductName="Winks" BrandName="Quebles Winks">
|
||||
<BasePurchaseURL LaunchWindowType="Messenger" SiteID="60025" URL="http://www.mobilemoney.com/partners/msnmessenger/webshop/winks.asp?pos=chatwindow&contentID=$CONTENTID$" />
|
||||
<BillingHelpURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/winks.asp?account=msnus&pos=billingmenu" />
|
||||
<BillingURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/winks.asp?account=msnus&pos=billingmenu" />
|
||||
<ProductShopURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/winks.asp?account=msnus&pos=actionmenu" />
|
||||
</Product>
|
||||
<Product id="9" PartnerID="TD" ProductName="Dynamic Display Pictures" BrandName="Quebles Display Pictures" DialogMenuString="Quebles Display Pictures" IntegrationType="deep">
|
||||
<BillingHelpURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/ddp.asp?account=msnus&pos=billingmenu" />
|
||||
<BillingURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/ddp.asp?account=msnus&pos=billingmenu" />
|
||||
<ProductShopURL LaunchWindowType="Messenger" SiteID="60025" URL="http://us.mobilemoney.com/partners/msnmessenger/webshop/ddp.asp?account=msnus&pos=actionmenu" />
|
||||
</Product>
|
||||
<Product id="10" PartnerID="SY" ProductName="Dynamic Display Pictures" BrandName="WeeMee" DialogMenuString="Create a Dynamic WeeMee" IntegrationType="medium">
|
||||
<ProductShopURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/ddp/" />
|
||||
<BillingURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/myaccount/" />
|
||||
<BillingHelpURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/help/" />
|
||||
</Product>
|
||||
<Product id="11" PartnerID="SY" ProductName="Winks" BrandName="WeeMee Winks">
|
||||
<ProductShopURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/winks/" />
|
||||
<BillingURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/myaccount/" />
|
||||
<BillingHelpURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/help/" />
|
||||
<BasePurchaseURL LaunchWindowType="IE" SiteID="41170" URL="http://www.wee-mee.com/en-us/content.aspx?id=$CONTENTID$" />
|
||||
</Product>
|
||||
<Product id="98" PartnerID="TD" ProductName="Emoticons" BrandName="Quebles Emoticons">
|
||||
<BasePurchaseURL LaunchWindowType="Messenger" SiteID="60025" URL="http://www.mobilemoney.com/partners/msnmessenger/webshop/emoticons.asp?pos=chatwindow&contentID=$CONTENTID$" />
|
||||
</Product>
|
||||
<Product id="99" PartnerID="VML" ProductName="Winks">
|
||||
<BasePurchaseURL LaunchWindowType="Messenger" SiteID="258666" URL="http://themepackfactory.windowslive.com/default.aspx?tpf.loc=WKGetThis&tpf.cid=$CONTENTID$" />
|
||||
</Product>
|
||||
</UPUX>
|
||||
<VoiceClip Hidden="0" />
|
||||
<VoiceVideo>
|
||||
<DisableSipProxyInviteTest>0</DisableSipProxyInviteTest>
|
||||
<DisableSipProxyCapability>0</DisableSipProxyCapability>
|
||||
<DisableSipProxyInvite>0</DisableSipProxyInvite>
|
||||
<DisableSipProxyCapability2>0</DisableSipProxyCapability2>
|
||||
<DisableSipProxyInvite2>0</DisableSipProxyInvite2>
|
||||
<VideoMessages>
|
||||
<Config EnableRecording="1" Length="30" />
|
||||
</VideoMessages>
|
||||
</VoiceVideo>
|
||||
</LocalizedConfig>
|
||||
</MsgrConfig>
|
||||
@@ -0,0 +1,180 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<MsgrConfig>
|
||||
<Simple>
|
||||
<Config>
|
||||
<ExpiresInDays>0</ExpiresInDays>
|
||||
</Config>
|
||||
<DisablePhoneDialer>0</DisablePhoneDialer>
|
||||
<GetItemVersionForUnknown>false</GetItemVersionForUnknown>
|
||||
<MinFlashPlayer BuildNumber="28" MajorVersion="9" MinorVersion="0"/>
|
||||
<Relay>
|
||||
<Enabled>0</Enabled>
|
||||
<MaxCallLength>0</MaxCallLength>
|
||||
</Relay>
|
||||
<TrustedDomains>
|
||||
<domain name="hiden.cc"/>
|
||||
<domain name="ugnet.gay"/>
|
||||
<domain name="crosstalk.im"/>
|
||||
<domain name="ctsrv.gay"/>
|
||||
</TrustedDomains>
|
||||
<ErrorResponseTable>
|
||||
<Feature type="0" name="Login">
|
||||
<Entry hr="0x80072EE7" action="3"/>
|
||||
<Entry hr="0x81000306" action="3"/>
|
||||
<Entry hr="0x80072EFD" action="3"/>
|
||||
<Entry hr="0x81000362" action="3"/>
|
||||
<Entry hr="0x8100030E" action="3"/>
|
||||
<Entry hr="0x80072745" action="3"/>
|
||||
<Entry hr="0x800701F7" action="3"/>
|
||||
<Entry hr="0x80072EFF" action="3"/>
|
||||
<Entry hr="0x81000363" action="3"/>
|
||||
<Entry hr="0x81000395" action="3"/>
|
||||
<Entry hr="0x800B0001" action="3"/>
|
||||
<Entry hr="0x81000323" action="3"/>
|
||||
<Entry hr="0x80072F19" action="3"/>
|
||||
<Entry hr="0x800701F8" action="3"/>
|
||||
<Entry hr="0x80072746" action="3"/>
|
||||
<Entry hr="0x800701F6" action="3"/>
|
||||
<Entry hr="0x81000377" action="3"/>
|
||||
<Entry hr="0x81000314" action="3"/>
|
||||
<Entry hr="0x81000378" action="3"/>
|
||||
<Entry hr="0x80072EFF" action="3"/>
|
||||
<Entry hr="0x80070190" action="3"/>
|
||||
<Entry hr="0x80070197" action="3"/>
|
||||
<Entry hr="0x80048820" action="3"/>
|
||||
<Entry hr="0x80048829" action="3"/>
|
||||
<Entry hr="0x80048834" action="3"/>
|
||||
<Entry hr="0x80048852" action="3"/>
|
||||
<Entry hr="0x8004886a" action="3"/>
|
||||
<Entry hr="0x8004886b" action="3"/>
|
||||
</Feature>
|
||||
<Feature type="2" name="MapFile">
|
||||
<Entry hr="0x810003F0" action="3"/>
|
||||
<Entry hr="0x810003F1" action="3"/>
|
||||
<Entry hr="0x810003F2" action="3"/>
|
||||
<Entry hr="0x810003F3" action="3"/>
|
||||
<Entry hr="0x810003F4" action="3"/>
|
||||
<Entry hr="0x810003F5" action="3"/>
|
||||
<Entry hr="0x810003F6" action="3"/>
|
||||
<Entry hr="0x810003F7" action="3"/>
|
||||
</Feature>
|
||||
<Feature type="3" name="P2P">
|
||||
<Entry hr="0x82000012" action="3"/>
|
||||
<Entry hr="0x82000013" action="3"/>
|
||||
<Entry hr="0x82000016" action="3"/>
|
||||
<Entry hr="0x82000017" action="3"/>
|
||||
<Entry hr="0x82000018" action="3"/>
|
||||
<Entry hr="0x82000019" action="3"/>
|
||||
</Feature>
|
||||
</ErrorResponseTable>
|
||||
</Simple>
|
||||
<TabConfig>
|
||||
{tabs}
|
||||
</TabConfig>
|
||||
<AbchCfg>
|
||||
<abchconfig>
|
||||
<url>https://ctsvcs.addressbook.ugnet.gay/abservice.asmx</url>
|
||||
</abchconfig>
|
||||
</AbchCfg>
|
||||
<LocalizedConfig Market="en-US">
|
||||
<AdMainConfig>
|
||||
<TextAdRefresh>1</TextAdRefresh>
|
||||
<TextAdServer>http://ctsvcs.advertising.ugnet.gay/ads/txt</TextAdServer>
|
||||
<AdBanner20URL Refresh="300">http://ctsvcs.advertising.ugnet.gay/ads/banner</AdBanner20URL>
|
||||
<StdAd AdVisible="60" VideoVisible="120" VideoDldIntvl="0">
|
||||
<VideoFeeds FeedsListURL="http://ctsvcs.advertising.ugnet.gay/svcs/msn-video-feeds/"/>
|
||||
</StdAd>
|
||||
</AdMainConfig>
|
||||
<AppDirConfig>
|
||||
<AppDirPageURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/Directory.aspx?L=en-us</AppDirPageURL>
|
||||
<AppDirSeviceURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/AppDirectory.asmx</AppDirSeviceURL>
|
||||
<AppDirVersionURL>http://mactivities.msgrsvcs.ctsrv.gay/AppDirectory/GetAppdirVersion.aspx</AppDirVersionURL>
|
||||
</AppDirConfig>
|
||||
<Contacts>
|
||||
<ABPendingRequests>
|
||||
<url>http://social.ugnet.gay/PendingRequests.aspx?mkt=en-us&partner=Messenger</url>
|
||||
<siteid>73625</siteid>
|
||||
<height>672</height>
|
||||
<width>808</width>
|
||||
</ABPendingRequests>
|
||||
<BuddysSocialNetwork>
|
||||
<url>http://social.ugnet.gay/NetworkExplorer.aspx?mkt=en-us&partner=Messenger&cid=%1</url>
|
||||
<siteid>73625</siteid>
|
||||
<height>674</height>
|
||||
<width>808</width>
|
||||
</BuddysSocialNetwork>
|
||||
<EditMyLiveContactProfile>
|
||||
<url>http://social.ugnet.gay/profile.aspx?action=edit&mode=activecontacts&mkt=en-us&partner=Messenger</url>
|
||||
<siteid>73625</siteid>
|
||||
</EditMyLiveContactProfile>
|
||||
<EditMyProfile>
|
||||
<url>http://social.ugnet.gay/profile.aspx?action=edit&partner=Messenger&mkt=en-us</url>
|
||||
<siteid>73625</siteid>
|
||||
</EditMyProfile>
|
||||
<Profile>
|
||||
<url>http://social.ugnet.gay/Profile.aspx?partner=Messenger&mkt=en-us&mem=%ls</url>
|
||||
<urlcid>http://social.ugnet.gay/Profile.aspx?partner=Messenger&mkt=en-us&cid=%ls</urlcid>
|
||||
<siteid>73625</siteid>
|
||||
</Profile>
|
||||
<SocialNetwork>
|
||||
<url>http://social.ugnet.gay/NetworkSetup.aspx?mkt=en-us&partner=Messenger</url>
|
||||
<siteid>73625</siteid>
|
||||
<height>674</height>
|
||||
<width>808</width>
|
||||
</SocialNetwork>
|
||||
<ViewMapEnabled>false</ViewMapEnabled>
|
||||
</Contacts>
|
||||
<ContactCard>
|
||||
<AddToMySpaceSiteId>45930</AddToMySpaceSiteId>
|
||||
<AddToMySpaceUrl>http://social.ugnet.gay/?addblogentry=true&mkt=nl-nl</AddToMySpaceUrl>
|
||||
<ContactCardDisabled>false</ContactCardDisabled>
|
||||
<CreateSpaceSiteId>45930</CreateSpaceSiteId>
|
||||
<CreateSpaceUrl>http://social.ugnet.gay/signup.aspx?mkt=nl-nl</CreateSpaceUrl>
|
||||
<GetItemVerUrl>http://storage.msn.com/storageservice/schematizedstore.asmx</GetItemVerUrl>
|
||||
<GetXmlFeedUrl>http://services.social.ugnet.gay/contactcard/contactcardservice.asmx</GetXmlFeedUrl>
|
||||
<MySpaceSiteId>45930</MySpaceSiteId>
|
||||
<MySpaceUrl>http://social.ugnet.gay/homepage.aspx</MySpaceUrl>
|
||||
<SpaceBaseSiteId>45930</SpaceBaseSiteId>
|
||||
<SpaceBaseUrl>http://social.ugnet.gay</SpaceBaseUrl>
|
||||
<SpaceIntegrationEnabled>true</SpaceIntegrationEnabled>
|
||||
</ContactCard>
|
||||
<FlashUpgradeURL>http://storage.ugnet.gay/crosstalk-dist/client/all/tools/flashplayer_10_3r183_48_winax.exe</FlashUpgradeURL>
|
||||
<GLinkMarket v="en_us"/>
|
||||
<MessengerBlogURL>https://crosstalk.im/blog</MessengerBlogURL>
|
||||
<MSNSearch>
|
||||
<ImagesURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=images</ImagesURL>
|
||||
<NewsURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$+news&ia=news</NewsURL>
|
||||
<SearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SearchURL>
|
||||
<SharedSearchURL>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL>
|
||||
<SharedSearchURL2>https://searx.ugnet.gay/searxng/search?q=$QUERY$&ia=web</SharedSearchURL2>
|
||||
</MSNSearch>
|
||||
<MsnTodayConfig>
|
||||
<MsnTodaySiteID>6528</MsnTodaySiteID>
|
||||
<MsnTodayURL>http://today.msgrsvcs.ctsrv.gay/start?wlm=1</MsnTodayURL>
|
||||
<Flags>2</Flags>
|
||||
</MsnTodayConfig>
|
||||
<MusicIntegration URL="https://www.last.fm/search/tracks?q=$ARTIST$+$TITLE$"/>
|
||||
<OneCare Enabled="0"/>
|
||||
<PSTNOut Hidden="1"/>
|
||||
<ReportAbuse>
|
||||
<ReportAbuseSID/>
|
||||
<ReportAbuseURL>https://crosstalk.im/report</ReportAbuseURL>
|
||||
</ReportAbuse>
|
||||
<RL>
|
||||
<ViewProfileURL>https://crosstalk.im/account/settings</ViewProfileURL>
|
||||
</RL>
|
||||
<SDrive Enabled="true"/>
|
||||
<TermsOfUse>
|
||||
<TermsOfUseSID>956</TermsOfUseSID>
|
||||
<TermsOfUseURL>https://crosstalk.im/tos</TermsOfUseURL>
|
||||
</TermsOfUse>
|
||||
<VoiceClip Hidden="0"/>
|
||||
<VoiceVideo>
|
||||
<DisableSipProxyInviteTest>0</DisableSipProxyInviteTest>
|
||||
<DisableSipProxyCapability>0</DisableSipProxyCapability>
|
||||
<DisableSipProxyInvite>0</DisableSipProxyInvite>
|
||||
<DisableSipProxyCapability2>0</DisableSipProxyCapability2>
|
||||
<DisableSipProxyInvite2>0</DisableSipProxyInvite2>
|
||||
</VoiceVideo>
|
||||
</LocalizedConfig>
|
||||
</MsgrConfig>
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<catalog version='ship.client.main.w5m4--RR1BLDF038-2014-04-01T05:44:12.5238180Z-16.4.3528.0331'>
|
||||
<hash><![CDATA[RzxtMCwjtYFypyMdfgLnBKXe4sTQlLkwNGglT2JlC3i2KNTe9o5951InWF+NOvB3l7OqSCeZeMB6ya+sgv+QTg==]]></hash><url><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/catalog-daily.cab]]></url><updatebinary version="16.4.12.0" hash="tqLEnISBlpKDwuPqyngCatvR9SQ=" hash512="C4eX3BXbvaEvOqdeuuiNM2/Mp/dqYkYd/eSjccioKBqT3NJdzTJxDquAWYjctx+aNa8oQpTVAhwmspQH6tpoSw=="><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/wlupdate.dll]]></updatebinary><setupbinary hash="RlB+TMr+j3kQ7aMcATOrqFw5ntwRJEsTVZbT0jXoswScV5K/A8gItinGvp5+us+Ku1WY9bA8z8QTXs7AnOlWKA=="><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/wlsetup-daily.exe]]></setupbinary><setupresources hash="udf7sUELzfq3mkHsv6ieVfG+thuVaa8s8WjNylwCk8AYGWQbUl+tH24XtwOVL+nGz+EpFqTc/eDP3DETZ9Sn/A"><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/en/wlsres.dll.mui]]></setupresources><rule name="IsValidOs" logic="and"><!-- Win7 and above --><os version="win7" condition="greaterthanorequal" /><!-- only for W5, only for less than QFE1 --><msiVersion version="16.4.3528.0331" condition="lessthan" upgradeCode="{9E1469E4-F701-FF47-7DF0-7B079A3E1586}" /><msiVersion version="16.0.0.0" condition="greaterthanorequal" upgradeCode="{9E1469E4-F701-FF47-7DF0-7B079A3E1586}" /></rule><MUDelay>0</MUDelay><Throttle>100</Throttle><RescanTimer>720</RescanTimer>
|
||||
<update version='ship.client.main.w5m4--RR1BLDF038-2014-04-01T05:44:12.5238180Z-16.4.3528.0331'>
|
||||
<hash><![CDATA[RzxtMCwjtYFypyMdfgLnBKXe4sTQlLkwNGglT2JlC3i2KNTe9o5951InWF+NOvB3l7OqSCeZeMB6ya+sgv+QTg==]]></hash><url><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/catalog-daily.cab]]></url><updatebinary version="16.4.12.0" hash="tqLEnISBlpKDwuPqyngCatvR9SQ=" hash512="C4eX3BXbvaEvOqdeuuiNM2/Mp/dqYkYd/eSjccioKBqT3NJdzTJxDquAWYjctx+aNa8oQpTVAhwmspQH6tpoSw=="><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/wlupdate.dll]]></updatebinary><setupbinary hash="RlB+TMr+j3kQ7aMcATOrqFw5ntwRJEsTVZbT0jXoswScV5K/A8gItinGvp5+us+Ku1WY9bA8z8QTXs7AnOlWKA=="><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/wlsetup-daily.exe]]></setupbinary><setupresources hash="udf7sUELzfq3mkHsv6ieVfG+thuVaa8s8WjNylwCk8AYGWQbUl+tH24XtwOVL+nGz+EpFqTc/eDP3DETZ9Sn/A"><![CDATA[https://secure.wlxrs.com/~Live.Setup.Catalogship/~16.4.12/~/~/~/~/ship/en/wlsres.dll.mui]]></setupresources><rule name="IsValidOs" logic="and"><!-- Win7 and above --><os version="win7" condition="greaterthanorequal" /><!-- only for W5, only for less than QFE1 --><msiVersion version="16.4.3528.0331" condition="lessthan" upgradeCode="{9E1469E4-F701-FF47-7DF0-7B079A3E1586}" /><msiVersion version="16.0.0.0" condition="greaterthanorequal" upgradeCode="{9E1469E4-F701-FF47-7DF0-7B079A3E1586}" /></rule><MUDelay>0</MUDelay><Throttle>100</Throttle><RescanTimer>720</RescanTimer>
|
||||
</update>
|
||||
</catalog>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<DeleteMessagesResponse xmlns="http://www.hotmail.msn.com/ws/2004/09/oim/rsi" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode xmlns:q0="{{ owsns }}">q0:AuthenticationFailed</faultcode>
|
||||
<faultstring>Exception of type System.Web.Services.Protocols.SoapException was thrown.</faultstring>
|
||||
<faultactor>https://ows.messenger.msn.com/OimWS/oim.asmx</faultactor>
|
||||
<detail>
|
||||
<TweenerChallenge xmlns="{{ owsns }}">ct=1,rver=1,wp=FS_40SEC_0_COMPACT,lc=1,id=1</TweenerChallenge>
|
||||
<LockKeyChallenge xmlns="{{ owsns }}">1850937852</LockKeyChallenge>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<Machine xmlns="{{ owsns }}" name="BAYM-OW15" ver="12.30.1623.0"/>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode xmlns:q0="{{ owsns }}">q0:InvalidContent</faultcode>
|
||||
<faultstring>Exception of type 'System.Web.Services.Protocols.SoapException' was thrown.</faultstring>
|
||||
<detail/>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<Machine xmlns="{{ owsns }}" name="BAYM-OW15" ver="12.30.1623.0"/>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode xmlns:q0="{{ owsns }}">q0:SenderThrottleLimitExceeded</faultcode>
|
||||
<faultstring>Exception of type 'System.Web.Services.Protocols.SoapException' was thrown.</faultstring>
|
||||
<detail/>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode xmlns:q0="{{ owsns }}">q0:SystemUnavailable</faultcode>
|
||||
<faultstring>Exception of type System.Web.Services.Protocols.SoapException was thrown.</faultstring>
|
||||
<detail />
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Schema validation error</faultstring>
|
||||
<faultactor>https://cts.storage.ugnet.gay/rsi/rsi.asmx</faultactor>
|
||||
<detail />
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<GetMessageResponse xmlns="http://www.hotmail.msn.com/ws/2004/09/oim/rsi">
|
||||
<GetMessageResult>{{ oim_data }}</GetMessageResult>
|
||||
</GetMessageResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<GetMetadataResponse xmlns="http://www.hotmail.msn.com/ws/2004/09/oim/rsi">{{ md }}</GetMetadataResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<SequenceAcknowledgment xmlns="http://schemas.xmlsoap.org/ws/2003/03/rm">
|
||||
<Identifier xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility">http://messenger.msn.com</Identifier>
|
||||
<AcknowledgmentRange Upper="{{ seq }}" Lower="{{ seq }}" />
|
||||
</SequenceAcknowledgment>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<StoreResponse xmlns="{{ owsns }}">
|
||||
<PointsConsumed>0</PointsConsumed>
|
||||
</StoreResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<AddMemberResponse xmlns="http://www.msn.com/webservices/AddressBook" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<CreateCircleResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<CreateCircleResult>
|
||||
<Id>00000000-0000-0000-0009-{{ chat_id }}</Id>
|
||||
</CreateCircleResult>
|
||||
</CreateCircleResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<DeleteMemberResponse xmlns="http://www.msn.com/webservices/AddressBook" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>Member does not exist </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/DeleteMember</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">MemberDoesNotExist</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">Member does not exist </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BY2ABCHWB346</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>
|
||||
BY2ABCHSQLA110.ABCHA1100134..prc_ABRoleMappingDeleteInt_W12R1: Member Does Not Exist in specified Role(s) : RoleMap Delete - 2
|
||||
|
||||
BY2ABCHSQLA110.ABCHA1100134..prc_ABRoleMappingDelete_W12R1: Failed to execute stored procedure prc_ABRoleMappingDeleteInt.
|
||||
</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Client</faultcode>
|
||||
<faultstring>User does not exist </faultstring>
|
||||
<faultactor>http://www.msn.com/webservices/AddressBook/AddMember</faultactor>
|
||||
<detail>
|
||||
<errorcode xmlns="http://www.msn.com/webservices/AddressBook">UserDoesNotExist</errorcode>
|
||||
<errorstring xmlns="http://www.msn.com/webservices/AddressBook">User does not exist </errorstring>
|
||||
<machineName xmlns="http://www.msn.com/webservices/AddressBook">BY2ABCHWB346</machineName>
|
||||
<additionalDetails>
|
||||
<originalExceptionErrorMessage>
|
||||
BY2ABCHSQLA110.ABCHA1100134..prc_ABRoleMappingAdd_W12R1: Failed to execute stored procedure prc_ABRoleMappingAddInt.
|
||||
</originalExceptionErrorMessage>
|
||||
</additionalDetails>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,128 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<ServiceHeader xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<Version>15.01.1408.0000</Version>
|
||||
<CacheKey>12r1:{{ cachekey }}</CacheKey>
|
||||
<CacheKeyChanged>true</CacheKeyChanged>
|
||||
<PreferredHostName>{{ host }}</PreferredHostName>
|
||||
<SessionId>{{ session_id }}</SessionId>
|
||||
</ServiceHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<FindMembershipResponse xmlns="http://www.msn.com/webservices/AddressBook">
|
||||
<FindMembershipResult>
|
||||
<Services>
|
||||
<Service>
|
||||
<Memberships>
|
||||
{% for lst in lists %}
|
||||
<Membership>
|
||||
<MemberRole>{{ lst.label }}</MemberRole>
|
||||
<Members>
|
||||
{% for contact in detail.contacts.values() %}
|
||||
{% if (contact.lists.__and__(lst) and lst not in (ContactList.AL,ContactList.BL,ContactList.RL)) or (lst in (ContactList.AL,ContactList.BL,ContactList.RL) and contact.lists.__and__(lst) and not contact.pending) %}
|
||||
<Member xsi:type="PassportMember">
|
||||
<MembershipId>{{ lst.label }}/{{ contact.head.uuid }}</MembershipId>
|
||||
<Type>Passport</Type>
|
||||
<State>Accepted</State>
|
||||
<Deleted>false</Deleted>
|
||||
<LastChanged>{{ now }}</LastChanged>
|
||||
<JoinedDate>{{ date_format(contact.head.date_created) }}</JoinedDate>
|
||||
<ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
|
||||
<Changes />
|
||||
<PassportName>{{ contact.head.email }}</PassportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<PassportId>0</PassportId>
|
||||
<CID>{{ cid_format(contact.head.uuid, decimal = True) }}</CID>
|
||||
<PassportChanges />
|
||||
<LookedupByCID>false</LookedupByCID>
|
||||
</Member>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if lst == ContactList.BL %}
|
||||
{% for circle in circles %}
|
||||
{% if circle.memberships[user.uuid].blocking %}
|
||||
<Member xsi:type="CircleMember">
|
||||
<MembershipId>Block/00000000-0000-0000-0009-{{ circle.chat_id }}</MembershipId>
|
||||
<Type>Circle</Type>
|
||||
<State>Accepted</State>
|
||||
<Deleted>false</Deleted>
|
||||
<LastChanged>{{ now }}</LastChanged>
|
||||
<JoinedDate>{{ now }}</JoinedDate>
|
||||
<ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
|
||||
<Changes />
|
||||
<CircleId>00000000-0000-0000-0009-{{ circle.chat_id }}</CircleId>
|
||||
</Member>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</Members>
|
||||
<MembershipIsComplete>true</MembershipIsComplete>
|
||||
</Membership>
|
||||
{% endfor %}
|
||||
<Membership>
|
||||
<MemberRole>Pending</MemberRole>
|
||||
<Members>
|
||||
{% for contact in detail.contacts.values() %}
|
||||
{% if contact.pending and not contact.lists.__and__(ContactList.FL) %}
|
||||
<Member xsi:type="PassportMember">
|
||||
<MembershipId>Pending/{{ contact.head.uuid }}</MembershipId>
|
||||
<Type>Passport</Type>
|
||||
<State>Accepted</State>
|
||||
<Deleted>false</Deleted>
|
||||
<LastChanged>{{ now }}</LastChanged>
|
||||
<JoinedDate>{{ date_format(contact.head.date_created) }}</JoinedDate>
|
||||
<ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
|
||||
<Changes />
|
||||
<PassportName>{{ contact.head.email }}</PassportName>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<PassportId>0</PassportId>
|
||||
<CID>{{ cid_format(contact.head.uuid, decimal = True) }}</CID>
|
||||
<PassportChanges />
|
||||
<LookedupByCID>false</LookedupByCID>
|
||||
</Member>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</Members>
|
||||
<MembershipIsComplete>true</MembershipIsComplete>
|
||||
</Membership>
|
||||
</Memberships>
|
||||
<Info>
|
||||
<Handle>
|
||||
<Id>1</Id>
|
||||
<Type>Messenger</Type>
|
||||
<ForeignId />
|
||||
</Handle>
|
||||
<InverseRequired>false</InverseRequired>
|
||||
<AuthorizationCriteria>Everyone</AuthorizationCriteria>
|
||||
<IsBot>false</IsBot>
|
||||
</Info>
|
||||
<Changes />
|
||||
<LastChange>{{ now }}</LastChange>
|
||||
<Deleted>false</Deleted>
|
||||
</Service>
|
||||
</Services>
|
||||
<OwnerNamespace>
|
||||
<Info>
|
||||
<Handle>
|
||||
<Id>00000000-0000-0000-0000-000000000000</Id>
|
||||
<IsPassportNameHidden>false</IsPassportNameHidden>
|
||||
<CID>0</CID>
|
||||
</Handle>
|
||||
<CreatorPuid>0</CreatorPuid>
|
||||
<CreatorCID>{{ cid_format(user.uuid, decimal = True) }}</CreatorCID>
|
||||
<CreatorPassportName>{{ user.email }}</CreatorPassportName>
|
||||
<CircleAttributes>
|
||||
<IsPresenceEnabled>false</IsPresenceEnabled>
|
||||
<Domain>WindowsLive</Domain>
|
||||
</CircleAttributes>
|
||||
<MessengerApplicationServiceCreated>false</MessengerApplicationServiceCreated>
|
||||
</Info>
|
||||
<Changes />
|
||||
<CreateDate>{{ now }}</CreateDate>
|
||||
<LastChange>{{ now }}</LastChange>
|
||||
</OwnerNamespace>
|
||||
</FindMembershipResult>
|
||||
</FindMembershipResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<AffinityCacheHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CacheKey>{{ cachekey }}</CacheKey>
|
||||
</AffinityCacheHeader>
|
||||
<StorageUserHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<Puid>{{ puid_format(user.uuid) }}</Puid>
|
||||
<Cid>{{ cid }}</Cid>
|
||||
<ApplicationId>0</ApplicationId>
|
||||
<DeviceId>0</DeviceId>
|
||||
<IsTrustedDevice>false</IsTrustedDevice>
|
||||
<IsStrongAuth>false</IsStrongAuth>
|
||||
<TicketToken>t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</TicketToken>
|
||||
<IsAdmin>false</IsAdmin>
|
||||
<LanguagePreference>0</LanguagePreference>
|
||||
<Claims />
|
||||
</StorageUserHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<CreateDocumentResponse xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CreateDocumentResult>{{ cid }}!205</CreateDocumentResult>
|
||||
</CreateDocumentResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<AffinityCacheHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CacheKey>{{ cachekey }}</CacheKey>
|
||||
</AffinityCacheHeader>
|
||||
<StorageUserHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<Puid>{{ puid_format(user.uuid) }}</Puid>
|
||||
<Cid>{{ cid }}</Cid>
|
||||
<ApplicationId>0</ApplicationId>
|
||||
<DeviceId>0</DeviceId>
|
||||
<IsTrustedDevice>false</IsTrustedDevice>
|
||||
<IsStrongAuth>false</IsStrongAuth>
|
||||
<TicketToken>t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</TicketToken>
|
||||
<IsAdmin>false</IsAdmin>
|
||||
<LanguagePreference>0</LanguagePreference>
|
||||
<Claims />
|
||||
</StorageUserHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<CreateRelationshipsResponse xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<AffinityCacheHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CacheKey>{{ cachekey }}</CacheKey>
|
||||
</AffinityCacheHeader>
|
||||
<StorageUserHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<Puid>{{ puid_format(user.uuid) }}</Puid>
|
||||
<Cid>{{ cid }}</Cid>
|
||||
<ApplicationId>0</ApplicationId>
|
||||
<DeviceId>0</DeviceId>
|
||||
<IsTrustedDevice>false</IsTrustedDevice>
|
||||
<IsStrongAuth>false</IsStrongAuth>
|
||||
<TicketToken>t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</TicketToken>
|
||||
<IsAdmin>false</IsAdmin>
|
||||
<LanguagePreference>0</LanguagePreference>
|
||||
<Claims />
|
||||
</StorageUserHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<DeleteRelationshipsResponse xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}" />
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<AffinityCacheHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CacheKey>{{ cachekey }}</CacheKey>
|
||||
</AffinityCacheHeader>
|
||||
<StorageUserHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<Puid>{{ puid_format(user.uuid) }}</Puid>
|
||||
<Cid>{{ cid }}</Cid>
|
||||
<ApplicationId>0</ApplicationId>
|
||||
<DeviceId>0</DeviceId>
|
||||
<IsTrustedDevice>false</IsTrustedDevice>
|
||||
<IsStrongAuth>false</IsStrongAuth>
|
||||
<TicketToken>t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</TicketToken>
|
||||
<IsAdmin>false</IsAdmin>
|
||||
<LanguagePreference>0</LanguagePreference>
|
||||
<Claims />
|
||||
</StorageUserHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<FindDocumentsResponse xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<FindDocumentsResult>
|
||||
<Document xsi:type="Photo">
|
||||
<ResourceID>{{ cid }}!205</ResourceID>
|
||||
<Name>photo_msn</Name>
|
||||
<WhenTaken>0001-01-01T00:00:00</WhenTaken>
|
||||
</Document>
|
||||
</FindDocumentsResult>
|
||||
</FindDocumentsResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<soap:Header>
|
||||
<AffinityCacheHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<CacheKey>{{ cachekey }}</CacheKey>
|
||||
</AffinityCacheHeader>
|
||||
<StorageUserHeader xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<Puid>{{ puid_format(user.uuid) }}</Puid>
|
||||
<Cid>{{ cid }}</Cid>
|
||||
<ApplicationId>0</ApplicationId>
|
||||
<DeviceId>0</DeviceId>
|
||||
<IsTrustedDevice>false</IsTrustedDevice>
|
||||
<IsStrongAuth>false</IsStrongAuth>
|
||||
<TicketToken>t={{ pptoken1 }}Y6+H31sTUOFkqjNTDYqAAFLr5Ote7BMrMnUIzpg860jh084QMgs5djRQLLQP0TVOFkKdWDwAJdEWcfsI9YL8otN9kSfhTaPHR1njHmG0H98O2NE/Ck6zrog3UJFmYlCnHidZk1g3AzUNVXmjZoyMSyVvoHLjQSzoGRpgHg3hHdi7zrFhcYKWD8XeNYdoz9wfA2YAAAgZIgF9kFvsy2AC0Fl/ezc/fSo6YgB9TwmXyoK0wm0F9nz5EfhHQLu2xxgsvMOiXUSFSpN1cZaNzEk/KGVa3Z33Mcu0qJqvXoLyv2VjQyI0VLH6YlW5E+GMwWcQurXB9hT/DnddM5Ggzk3nX8uMSV4kV+AgF1EWpiCdLViRI6DmwwYDtUJU6W6wQXsfyTm6CNMv0eE0wFXmZvoKaL24fggkp99dX+m1vgMQJ39JblVH9cmnnkBQcKkV8lnQJ003fd6iIFzGpgPBW5Z3T1Bp7uzSGMWnHmrEw8eOpKC5ny4x8uoViXDmA2UId23xYSoJ/GQrMjqB+NslqnuVsOBE1oWpNrmfSKhGU1X0kR4Eves56t5i5n3XU+7ne0MkcUzlrMi89n2j8aouf0zeuD7o+ngqvfRCsOqjaU71XWtuD4ogu2X7/Ajtwkxg/UJDFGAnCxFTTd4dqrrEpKyMK8eWBMaartFxwwrH39HMpx1T9JgknJ1hFWELzG8b302sKy64nCseOTGaZrdH63pjGkT7vzyIxVH/b+yJwDRmy/PlLz7fmUj6zpTBNmCtl1EGFOEFdtI2R04EprIkLXbtpoIPA7m0TPZURpnWufCSsDtD91ChxR8j/FnQ/gOOyKg/EJrTcHvM1e50PMRmoRZGlltBRRwBV+ArPO64On6zygr5zud5o/aADF1laBjkuYkjvUVsXwgnaIKbTLN2+sr/WjogxT1Yins79jPa1+3dDenxZtE/rHA/6qsdJmo5BJZqNYQUFrnpkU428LryMnBaNp2BW51JRsWXPAA7yCi0wDlHzEDxpqaOnhI4Ol87ra+VAg==&p=</TicketToken>
|
||||
<IsAdmin>false</IsAdmin>
|
||||
<LanguagePreference>0</LanguagePreference>
|
||||
<Claims />
|
||||
</StorageUserHeader>
|
||||
</soap:Header>
|
||||
<soap:Body>
|
||||
<GetProfileResponse xmlns="http://www.msn.com/webservices/storage/{{ storage_ns }}">
|
||||
<GetProfileResult>
|
||||
<ResourceID>{{ cid }}!106</ResourceID>
|
||||
<DateModified>{{ now }}</DateModified>
|
||||
<ExpressionProfile>
|
||||
<ResourceID>{{ cid }}!118</ResourceID>
|
||||
<Version>205</Version>
|
||||
<DateModified>{{ now }}</DateModified>
|
||||
<Photo>
|
||||
<ResourceID>{{ cid }}!205</ResourceID>
|
||||
<DocumentStreams>
|
||||
{% if mime %}
|
||||
<DocumentStream>
|
||||
<DocumentStreamName>UserTileStatic</DocumentStreamName>
|
||||
<MimeType>image/{{ mime }}</MimeType>
|
||||
<DataSize>{{ size_static }}</DataSize>
|
||||
<PreAuthURL>https://{{ host }}/avatar/{{ user.uuid }}/static</PreAuthURL>
|
||||
<WriteMode>Overwrite</WriteMode>
|
||||
<StreamDataStatus>None</StreamDataStatus>
|
||||
<StreamStatus>None</StreamStatus>
|
||||
<Genie>false</Genie>
|
||||
<StreamVersion>0</StreamVersion>
|
||||
<DocumentStreamType>UserTileStatic</DocumentStreamType>
|
||||
<IsAliasForDefault>false</IsAliasForDefault>
|
||||
<ExpirationDateTime>0001-01-01T00:00:00</ExpirationDateTime>
|
||||
</DocumentStream>
|
||||
{% endif %}
|
||||
<DocumentStream>
|
||||
<DocumentStreamName>UserTileSmall</DocumentStreamName>
|
||||
<DataSize>{{ size_small }}</DataSize>
|
||||
<PreAuthURL>https://{{ host }}/avatar/{{ user.uuid }}/small</PreAuthURL>
|
||||
<WriteMode>Overwrite</WriteMode>
|
||||
<StreamDataStatus>None</StreamDataStatus>
|
||||
<StreamStatus>None</StreamStatus>
|
||||
<Genie>false</Genie>
|
||||
<StreamVersion>0</StreamVersion>
|
||||
<DocumentStreamType>Named</DocumentStreamType>
|
||||
<IsAliasForDefault>false</IsAliasForDefault>
|
||||
<ExpirationDateTime>0001-01-01T00:00:00</ExpirationDateTime>
|
||||
</DocumentStream>
|
||||
</DocumentStreams>
|
||||
</Photo>
|
||||
{% if roaming_info.message %}
|
||||
<PersonalStatus>{{ roaming_info.message }}</PersonalStatus>
|
||||
<PersonalStatusLastModified>{{ date_format(roaming_info.message_last_modified) }}</PersonalStatusLastModified>
|
||||
{% endif %}
|
||||
{% if roaming_info.name %}
|
||||
<DisplayName>{{ roaming_info.name }}</DisplayName>
|
||||
<DisplayNameLastModified>{{ date_format(roaming_info.name_last_modified) }}</DisplayNameLastModified>
|
||||
{% endif %}
|
||||
<StaticUserTilePublicURL>https://{{ host }}/avatar/{{ user.uuid }}/static</StaticUserTilePublicURL>
|
||||
</ExpressionProfile>
|
||||
</GetProfileResult>
|
||||
</GetProfileResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user