diff options
author | Mario <mario@mariovavti.com> | 2017-10-25 13:29:19 +0200 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2017-10-25 13:29:19 +0200 |
commit | 344aa13c64f0fa7a246f3284bf9cdb267e6101d3 (patch) | |
tree | 943809c01164dda7b6e4a26bc3d6c7e8c48bd6eb /doc | |
parent | 61c86212b944efa0d78dcc0364b81bfb8a0d19bc (diff) | |
parent | 69b22e3f7916b5ba19b5ed03a55ad72bf5995291 (diff) | |
download | volse-hubzilla-344aa13c64f0fa7a246f3284bf9cdb267e6101d3.tar.gz volse-hubzilla-344aa13c64f0fa7a246f3284bf9cdb267e6101d3.tar.bz2 volse-hubzilla-344aa13c64f0fa7a246f3284bf9cdb267e6101d3.zip |
Merge branch '2.8RC'
Diffstat (limited to 'doc')
-rw-r--r-- | doc/addons.bb | 1 | ||||
-rw-r--r-- | doc/admin/administrator_guide.md | 17 | ||||
-rw-r--r-- | doc/context/en/appman/help.html | 4 | ||||
-rw-r--r-- | doc/context/en/apps/edit/help.html | 4 | ||||
-rw-r--r-- | doc/context/en/apps/help.html | 6 | ||||
-rw-r--r-- | doc/context/en/channel/help.html | 4 | ||||
-rw-r--r-- | doc/context/en/wiki/help.html | 10 | ||||
-rw-r--r-- | doc/developer/zot_protocol.bb | 19 | ||||
-rw-r--r-- | doc/hook/channel_links.bb | 12 | ||||
-rw-r--r-- | doc/hook/update_unseen.bb | 9 | ||||
-rw-r--r-- | doc/hooklist.bb | 6 | ||||
-rw-r--r-- | doc/member/member_guide.bb | 22 | ||||
-rw-r--r-- | doc/toc.html | 62 |
13 files changed, 92 insertions, 84 deletions
diff --git a/doc/addons.bb b/doc/addons.bb index 85bb2dca3..e6841d3d0 100644 --- a/doc/addons.bb +++ b/doc/addons.bb @@ -61,6 +61,7 @@ [*] piwik - open source website analytics [*] planets - set location field to a random planet from Star Wars [*] pong - classic pong game +[*] pubcrawl - ActivityPub protocol emulator [*] pubsubhubbub - PuSH protocol for optimised delivery to feed subscribers (required by GNU-Social protocol) [*] pumpio - crosspost to Pump.io [*] qrator - generate QR code images diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md index 9e0ee3c59..2fa52c7c6 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/admin/administrator_guide.md @@ -246,7 +246,7 @@ a _standard_ and _premium_ class using the following lines: App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account - // configuration for parent service class + // configuration for standard service class App::$config['service_class']['standard'] = array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB) 'total_identities' =>1, // number of channels an account can create @@ -256,7 +256,7 @@ a _standard_ and _premium_ class using the following lines: 'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB) 'chatters_inroom' =>20); - // configuration for teacher service class + // configuration for premium service class App::$config['service_class']['premium'] = array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB) 'total_identities' =>20, // number of channels an account can create @@ -346,6 +346,19 @@ empty: 1. After successful import (check!) delete your channel on the old RedMatrix Server. 1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. +### Administration + +#### Site Administration + +Administration of the website is commonly done through the admin webpage located at /admin on your website. In order to access this page you must have administration rights to the server. Administration rights are granted to the first account to register on your site, **provided** the email address of that account exactly matches the email address you provided as the administrator's email address during setup. + +There are several ways that this can fail and leave the system without an administrator account, for instance if the first account that was created provided a different email address than the administrator email address that was supplied during setup. + +For security reasons there is no web page or interface on the system which will give you administrator access. If you need to correct a situation where a system has no administrator account it **must** be done by editing the account table in the database. There is no other way. To do this, you will need to locate the entry in the account table which belongs to the desired administrator, and set 'account_roles' for that entry to 4096. You will then be able to access the admin page from your system's profile menu or directly via /admin . + +A hub can have multiple admins and there is no limit to how administrators you can have. Repeat the above process for every account you wish to provide with administration rights. + + ### Troubleshooting #### Log files diff --git a/doc/context/en/appman/help.html b/doc/context/en/appman/help.html new file mode 100644 index 000000000..27cb03624 --- /dev/null +++ b/doc/context/en/appman/help.html @@ -0,0 +1,4 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Edit individual properties of the app you selected. Categories allow you to sort your apps to help you find them in the list more easily. Support for custom apps you or your administrator may choose to create includes fields such as "Price of app" and "Location for purchase" that are not applicable to core Hubzilla apps.</dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/apps/edit/help.html b/doc/context/en/apps/edit/help.html new file mode 100644 index 000000000..1d378f962 --- /dev/null +++ b/doc/context/en/apps/edit/help.html @@ -0,0 +1,4 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Edit or delete your apps using the control buttons beside each app icon in the list.</dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/apps/help.html b/doc/context/en/apps/help.html new file mode 100644 index 000000000..ad6daade5 --- /dev/null +++ b/doc/context/en/apps/help.html @@ -0,0 +1,6 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>This page shows you what apps are available to your channel, including both core apps and those supplied by addons. To add an app to the <a href='#' onclick='contextualHelpFocus("#app-menu", 1); return false;' title="Click to open...">app menu</a> "star" the app in the list below.</dd> + <dt>Manage Apps</dt> + <dd>Press the "Manage Apps" button to open a page where you can edit the name, categories, and other properties of your apps.</dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/channel/help.html b/doc/context/en/channel/help.html index 6e3181cbf..0c5b99754 100644 --- a/doc/context/en/channel/help.html +++ b/doc/context/en/channel/help.html @@ -3,6 +3,4 @@ <dd>This is the home page of a channel. It is similar to someone's profile "wall" in a social network context. Posts created by the channel are displayed according to the observer's viewing permissions.</dd> <dt>Create a Post</dt> <dd>If you have permission to create posts on the channel page, then you will see the post editor at the top.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Click to highlight element...">Channel Content Tabs</a></dt> - <dd>The channel content tabs are links to other content published by the channel. The <b>About</b> tab links to the channel profile. The <b>Photos</b> tab links to the channel photo galleries. The <b>Files</b> tab links to the general shared files published by the channel.</dd> -</dl>
\ No newline at end of file +</dl> diff --git a/doc/context/en/wiki/help.html b/doc/context/en/wiki/help.html index 5ac9b22ae..5dee85375 100644 --- a/doc/context/en/wiki/help.html +++ b/doc/context/en/wiki/help.html @@ -1,12 +1,10 @@ <dl class="dl-horizontal"> <dt>General</dt> <dd>Each wiki is a collection of pages, composed as Markdown-formatted text files.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#wikis-index", 1); return false;' title="Click to highlight element...">Wiki List</a></dt> + <dt>Wiki List</dt> <dd>Wikis owned by the channel <i>that you have permission to view</i> are listed in the side panel.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element...">Page History</a></dt> + <dt>Page History</dt> <dd>Every revision of a page is saved to allow quick reversion. Click the <b>History</b> tab to view a history of page revisions, including the date and author of each. The revert button will load the selected revision but will not automatically save the page.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Click to highlight element...">Pages</a></dt> + <dt>Pages</dt> <dd>The list of pages in the wiki are listed in the <b>Wiki Pages</b> panel. Prior to saving page edits using the <b>Page</b> control dropdown menu, you may <a href='#' onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Click to highlight element...">enter a custom message</a> to be displayed in the <a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element..."><b>Page History</b></a> viewer along with the revision.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Click to highlight element...">Channel Content Tabs</a></dt> - <dd>The channel content tabs are links to other content published by the channel. The <b>About</b> tab links to the channel profile. The <b>Photos</b> tab links to the channel photo galleries. The <b>Files</b> tab links to the general shared files published by the channel.</dd> -</dl>
\ No newline at end of file +</dl> diff --git a/doc/developer/zot_protocol.bb b/doc/developer/zot_protocol.bb index b87e1cd73..e9355bca8 100644 --- a/doc/developer/zot_protocol.bb +++ b/doc/developer/zot_protocol.bb @@ -79,7 +79,7 @@ We may also attempt to recover with even less information, but doing so is prone In order to implement high performance communications, the data transfer format for all aspects of Zot is JSON. XML communications require way too much overhead. -Bi-directional encryption is based on RSA 4096-bit keys expressed in DER/ASN.1 format using the PKCS#8 encoding variant, with AES-256-CBC used for block encryption of variable length or large items. +Bi-directional encryption is based on RSA 4096-bit keys expressed in DER/ASN.1 format using the PKCS#8 encoding variant, with AES encryption of variable length or large items. The precise encryption algorithms are negotiable between sites. Some aspects of well known "federation protocols" (webfinger, salmon, activitystreams, portablecontacts, etc.) may be used in zot, but we are not tied to them and will not be bound by them. $Projectname project is attempting some rather novel developments in decentralised communications and if there is any need to diverge from such "standard protocols" we will do so without question or hesitation. @@ -242,7 +242,7 @@ Example of discovery packet for 'mike@zothub.com' Discovery returns a JSON array with the following components: -'success' => ('1' or '') Operation was successful if '1'. Otherwise an optional 'message' may be present indicating the source of error. +'success' => (true or false) Operation was successful if true. Otherwise an optional 'message' may be present indicating the source of error. 'signed_token' => If a token parameter was provided in the request, it is prepended with the text 'token.' and then RSA signed with the channel private key and base64url encoded and returned as 'signed_token'. @@ -272,12 +272,11 @@ Discovery returns a JSON array with the following components: 'target_sig' => if a permissions target was specified, the signature is mirrored. -'searchable' => ('1' or '') '1' indicates this entry can be searched in a directory +'searchable' => (true or false) true indicates this entry can be searched in a directory [h5]Permissions[/h5] - -'permisssions' => extensible array of permissions appropriate to this target, values are '1' or '' +'permissions' => extensible array of permissions appropriate to this target, values are true or false Permissions may include: [list] @@ -328,7 +327,7 @@ Each location is an array of 'address' => the webbie or user@host identifier associated with this location -'primary' => ('1' or '') whether or not this is the primary location for this channel where files and web pages are generally found +'primary' => (true or false) whether or not this is the primary location for this channel where files and web pages are generally found 'url' => url of the root of this DNS location e.g. https://example.com @@ -391,7 +390,7 @@ When this packet is received, a Zot message is initiated to the auth identity: } [/code] -auth_check messages MUST be encrypted with AES256CBC. This message is sent to the origination site, which checks the 'secret' to see if it is the same as the 'sec' which it passed originally. It also checks the secret_sig which is the secret signed by the destination channel's private key and base64url encoded. If everything checks out, a json packet is returned: +auth_check messages MUST be encrypted. This message is sent to the origination site, which checks the 'secret' to see if it is the same as the 'sec' which it passed originally. It also checks the secret_sig which is the secret signed by the destination channel's private key and base64url encoded. If everything checks out, a json packet is returned: [code nowrap] { "success":1, @@ -404,11 +403,11 @@ auth_check messages MUST be encrypted with AES256CBC. This message is sent to th [h4]Zot Signatures[/h4] All signed data in Zot is accomplished by performing an RSA sign operation using the private key of the initiator. The binary result is then base64url encoded for transport. [h4]Zot Encryption[/h4] -Encryption is currently provided by AES256-CBC, the Advanced Encryption Standard using 256-bit keys and the Cipher Block Chaining mode of operation. Additional algorithms MAY be supported. A 32-octet key and 16-octet initialisation vector are randomly generated. The desired data is then encrypted using these generated strings and the result base64url encoded. Then we build an array: +Encryption is currently provided by AES256CTR. Additional algorithms MAY be supported. A 32-octet key and 16-octet initialisation vector are randomly generated. The desired data is then encrypted using these generated strings and the result base64url encoded. Then we build an array: [dl terms="b"] [*= data]The base64url encoded encrypted data -[*= alg]The chosen algorithm, in this case the string 'aes256cbc'. +[*= alg]The chosen algorithm, in this case the string 'aes256ctr'. [*= key]The randomly generated key, RSA encrypted using the recipients public key, and the result base64url encoded [*= iv]The randomly generated initialization vector, RSA encrypted using the recipient's public key, and the result base64url encoded [/dl] @@ -449,7 +448,7 @@ M23in0xqMVsyQvzjNkpImrO/QdbEFRIIMee83IHq+adbyjQR49Z2hNEIZhkLPc3U "callback":"\/post", "version":"1.2", "encryption":{ - "aes256cbc" + "aes256ctr" }, "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", "secret_sig":"0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q" diff --git a/doc/hook/channel_links.bb b/doc/hook/channel_links.bb new file mode 100644 index 000000000..c0243dac6 --- /dev/null +++ b/doc/hook/channel_links.bb @@ -0,0 +1,12 @@ +[h2]channel_links[/h2] + +Called when generating the Link HTTP header for the channel page. Different protocol stacks can add links to this header. + +Hook data = array + 'channel_address' => channel nickname, no checking is done to see if it is valid + 'channel_links' => array of channel links in the format + 'url' => url of resource + 'rel' => link relation + 'type' => MIME type + +All fields are required
\ No newline at end of file diff --git a/doc/hook/update_unseen.bb b/doc/hook/update_unseen.bb new file mode 100644 index 000000000..8fb02c239 --- /dev/null +++ b/doc/hook/update_unseen.bb @@ -0,0 +1,9 @@ +[h3]update_unseen[/h3] + +Called prior to automatically marking items 'seen'; allowing a plugin the choice to not perform this action. + +hook data + +[ 'channel_id' => local_channel(), 'update' => 'unset' ]; + +If 'update' is set to 0 or false on return, the update operation is not performed.
\ No newline at end of file diff --git a/doc/hooklist.bb b/doc/hooklist.bb index da4d9596b..1192a1506 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -91,6 +91,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl] Called when removing a channel +[zrl=[baseurl]/help/hook/channel_links]channel_links[/zrl] + Called when generating the Link: HTTP header for a channel + [zrl=[baseurl]/help/hook/channel_settings]channel_settings[/zrl] Called when displaying the channel settings page @@ -572,6 +575,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/tagged]tagged[/zrl] Called when a delivery is processed which results in you being tagged +[zrl=[baseurl]/help/hook/update_unseen]update_unseen[/zrl] + Called prior to automatically marking items seen which were loaded in the browser + [zrl=[baseurl]/help/hook/validate_channelname]validate_channelname[/zrl] Used to validate the names used by a channel diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb index 0a2d11a88..20d273f44 100644 --- a/doc/member/member_guide.bb +++ b/doc/member/member_guide.bb @@ -190,7 +190,18 @@ You may also connect with any channel by visiting the "Connections" pa To connect with channels on other networks: -The process for connecting to channels on other networks (such as GNU-Social, Mastodon, and Diaspora) is similar - type their "webbie" into the "Add New Connections" box on the "Connections" page. Before you do this however, please visit your Settings page (Feature/Addon Settings) and ensure that the relevant protocol (Diaspora or GNU-Social) is provided on your hub and [b][i]activated[/i] for your channel[/b]. These networks/protocols do not support account migration and location independence so if you move location or clone your channel elsewhere, communications with these connections may fail. For this reason these protocols are not activated by default, but only through your consent. Activating these protocols involves an important decision between communicating with friends on these networks or providing fail-safe account resilience if your server fails. +The process for connecting to channels on other networks (such as GNU-Social, Mastodon, and Diaspora) is similar - type their "webbie" into the "Add New Connections" box on the "Connections" page. Before you do this however, please visit your Settings page (Feature/Addon Settings) and ensure that the relevant protocol (Diaspora, GNU-Social/OStatus, or ActivityPub) is provided on your hub and [b][i]activated[/i] for your channel[/b]. These networks/protocols do not support account migration and location independence so if you move location or clone your channel elsewhere, communications with these connections may fail. For this reason these protocols are not activated by default, but only through your consent. Activating these protocols involves an important decision between communicating with friends on these networks or providing fail-safe account resilience if your server fails. + +Some communications offer more than one protocol. If you wish to connect with somebody on Mastodon (for instance) they can use either the 'ostatus' or the 'activitypub' protocol for communication. Generally the 'activitypub' protocol will provide a better experience than 'ostatus', but $Projectname will often choose the first protocol it discovers and this may not be the one you want. You may connect with somebody over a specific protocol by prepending the protocol name in square brackets to their "webbie". For example + +[code] +[activitypub]foobar@foo.bar +[ostatus]foobar@foo.bar +[diaspora]foobar@foo.bar +[zot]foobar@foo.bar +[rss]https://foo.bar/foobar +[/code] + To connect with RSS feeds: @@ -634,6 +645,15 @@ This will select the theme named "suckerberg" and select the "pas The condensed notation isn't part of Comanche itself but is recognised by $Projectname platform as a theme specifier. +[h4]Navbar[/h4] + +[code] + [navbar]tucson[/navbar] +[/code] + +Use the 'tucson' navbar template and CSS rules. By default the 'default' navbar template will be used. + + [h4]Regions[/h4] Each region has a name, as noted above. You will specify the region of interest using a 'region' tag, which includes the name. Any content you wish placed in this region should be placed between the opening region tag and the closing tag. diff --git a/doc/toc.html b/doc/toc.html index 4da01d55d..1b7de3cb3 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -71,65 +71,3 @@ </div> </div> </div> -<script> - toc = {}; - // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) - $(document).ready(function () { - $(".doco-section").find('a').each(function(){ - var url = document.createElement('a'); - url.href = window.location; - var pageName = url.href.split('/').pop().split('#').shift().split('?').shift(); - var linkName = $(this).attr('href').split('/').pop(); - if(pageName === linkName) { - var tocUl = $(this).closest('a').append('<ul>').find('ul'); - tocUl.removeClass(); // Classes are automatically added to <ul> elements by something else - tocUl.toc({content: "#doco-content", headings: "h3"}); - tocUl.addClass('toc-content'); - tocUl.addClass('list-unstyled'); - tocUl.attr('id', 'doco-side-toc'); - - } - }); - - $(document.body).trigger("sticky_kit:recalc"); - - toc.contentTop = []; - toc.edgeMargin = 20; // margin above the top or margin from the end of the page - toc.topRange = 200; // measure from the top of the viewport to X pixels down - // Set up content an array of locations - $('#doco-side-toc').find('a').each(function(){ - toc.contentTop.push( $( '#'+$(this).attr('href').split('#').pop() ).offset().top ); - }); - - - // adjust side menu - $(window).scroll(function(){ - var winTop = $(window).scrollTop(), - bodyHt = $(document).height(), - vpHt = $(window).height() + toc.edgeMargin; // viewport height + margin - $.each( toc.contentTop, function(i,loc){ - if ( ( loc > winTop - toc.edgeMargin && ( loc < winTop + toc.topRange || ( winTop + vpHt ) >= bodyHt ) ) ){ - $('#doco-side-toc li') - .removeClass('selected-doco-nav') - .eq(i).addClass('selected-doco-nav'); - if (typeof($('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]) !== 'undefined') { - window.history.pushState({}, '', location.href.split('#')[0] + '#' + $('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]); - } - } - }); - }); - - // When the page loads, it does not scroll to the section specified in the URL because it - // has not been constructed yet by the script. This will reload the URL - if (typeof(location.href.split('#')[1]) !== 'undefined') { - var p = document.createElement('a'); - p.href = location.href; - var portstr = ''; - if(p.port !== '') { - portstr = ':'+ p.port; - } - var newref = p.protocol + '//'+ p.hostname + portstr + p.pathname + p.hash.split('?').shift(); - location.replace(newref) - } - }); -</script> |