以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
図1は、本発明の実施の形態の1つにおける情報処理システムの全体概要の一例を示す図である。図1を参照して、情報処理システム1は、管理サーバー300と、クラウドサーバー400と、中継装置として機能するゲートウェイ(G/W)装置200と、複合機であるMFP(Multi Function Peripheral)100,100A,100Bと、を含む。管理サーバー300、クラウドサーバー400、およびゲートウェイ装置200それぞれは、インターネット5に接続されており、インターネット5を介して互いに通信可能である。さらに、管理サーバー300、クラウドサーバー400、およびゲートウェイ装置200それぞれは、インターネット5に接続された他のコンピューターと通信可能である。
ゲートウェイ装置200は、さらに、ローカルエリアネットワーク(LAN)3と接続されており、そのLAN3に、MFP100,100A,100Bが接続されている。ゲートウェイ装置200は、LAN3に接続されたMFP100,100A,100Bと通信可能である。さらに、ゲートウェイ装置200およびMFP100,100A,100Bそれぞれは、LAN3に接続された他のコンピューターと通信可能である。
ゲートウェイ装置200は、ファイアーウォール機能を有し、ファイアーウォールの内部のLAN3と、ファイアーウォールの外部のインターネット5とを接続する。ゲートウェイ装置200は、インターネット5に接続された管理サーバー300およびクラウドサーバー400から、LAN3に接続されたMFP100,100A,100Bへのアクセスを制限する。ゲートウェイ装置200が有するファイアーウォール機能は、特に限定するものではないが、パケットに含まれるアドレスに基づいて通信の許可または不許可を判定するパケットフィルター型のファイアーウォール機能である。なお、アプリケーション層のプロトコルのレベルで外部との通信を代替し、制御するアプリケーション型のファイアーウォール機能であってもよい。なお、ゲートウェイ装置200が配置される位置は、ファイアーウォールの内部である。
本実施の形態における情報処理システム1においては、ファイアーウォールの外部のインターネット5に接続されたクラウドサーバー400が、ファイアーウォールの内部のLAN3に接続されたMFP100,100A,100Bのいずれかを制御することを可能にする。クラウドサーバー400は、ファイアーウォールの内部のLAN3に接続されたパーソナルコンピューター(以下「PC」という)からアクセスされて、そのPCを操作するユーザーによる指示にしたがってサービスを提供するための処理を実行する場合と、ファイアーウォールの外部のインターネット5に接続されたPCからアクセスされて、そのPCを操作するユーザーによる指示にしたがってサービスを提供するための処理を実行する場合と、がある。ここでは、一例として、クラウドサーバー400が、それが提供するサービスに基づく処理を実行し、その結果得られるデータに対してMFP100に処理を実行させる場合を例に説明する。この場合、クラウドサーバー400はMFP100に処理を実行させるための制御コマンドを送信する。
クラウドサーバー400がMFP100に送信する制御コマンドが、ゲートウェイ装置200のファイアーウォールを通過するようにするために、ゲートウェイ装置200は、クラウドサーバー400とMFP100との間でトンネル接続を確立する。トンネル接続を確立する技術は、種々の方法があるが、ここでは、管理サーバー300がトンネル接続を支援する方法を例に説明する。
ゲートウェイ装置200は、予め記憶された管理サーバー300のネットワークアドレスを用いて管理サーバー300との間で通信セッションの確立を要求する。ゲートウェイ装置200は、ファイアーウォールの内部であり、管理サーバー300は、ファイアーウォールの外部なので、ファイアーウォールを通過する通信セッションが確立される。この通信セッションを、以下、常時接続セッションという。
ゲートウェイ装置200は、管理サーバー300との間で常時接続セッションを確立すると、LAN3に接続されたMFP100,100A,100Bそれぞれを識別するための装置識別情報を管理サーバー300に常時接続セッションを介して送信する。管理サーバー300においては、ゲートウェイ装置200に接続されたMFP100,100A,100Bを認識する。
次に、クラウドサーバー400が管理サーバー300との間で、通信セッションを確立する。ここで、クラウドサーバー400と管理サーバー300との間で確立される通信セッションをグローバルセッションという。管理サーバー300は、ゲートウェイ装置200から受信されたMFP100,100A,100Bそれぞれの装置識別情報を受信しているので、クラウドサーバー400を操作するユーザーに対して、トンネル接続が可能な装置としてMFP100,100A,100Bのうちからいずれかを選択させる。ここでは、クラウドサーバー400を操作するユーザーによって、トンネル接続する装置としてMFP100が選択される場合を例に説明する。
クラウドサーバー400は、クラウドサーバー400を操作するユーザーによって、トンネル接続する装置としてMFP100が選択される場合、MFP100のアドレス情報と、クラウドサーバー400のアドレス情報とを含む接続要求を管理サーバー300に送信する。MFP100のアドレス情報は、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む。クラウドサーバー400のアドレス情報は、クラウドサーバー400のネットワークアドレスと、クラウドサーバー400が実行するジョブのジョブIDと、を含む。ここでは、クラウドサーバー400のアドレス情報を、MFP100からクラウドサーバー400にアクセスするためのURL(Uniform Resource Locator)としている。URLには、例えば「https://www.example.com/print_service?job_id=j00123:60001」のように、クラウドサーバー400のネットワークアドレス(ドメイン名)、ウェブページの識別子、クラウドサーバー400が実行するジョブの識別子(ジョブID)、および待ち受けポートのポート番号などが含まれる。待ち受けポートとして、所定の範囲のポートのうち未使用のものが用いられる。また、ジョブIDとして、ユニークなIDが発行される。クラウドサーバー400が実行するジョブは、クラウドサーバー400が提供するサービスのうちクラウドサーバー400を操作するユーザーによって指定されたサービスに対応するジョブである。クラウドサーバー400のアドレス情報であるURLが、ジョブIDを含むため、そのURLにアクセスしてきた装置をジョブIDにより特定されるジョブと対応付けることができる。換言すれば、クラウドサーバー400を操作するユーザーによって指定されたサービスを実行するジョブを、接続要求をした装置、ここではMFP100と対応付けることができる。
管理サーバー300は、クラウドサーバー400から接続要求を受信する場合、接続要求に含まれるMFP100のアドレス情報に含まれるゲートウェイ装置200の装置識別情報に基づいてゲートウェイ装置200を特定し、接続要求をゲートウェイ装置200に常時接続セッションを介して転送する。この場合、接続要求を、常時接続セッションに対応するプロトコルに応じてカプセル化して送信する。
ゲートウェイ装置200は、さらに、管理サーバー300から接続要求を受信すると、接続要求に含まれるクラウドサーバー400のアドレス情報に基づいて、クラウドサーバー400との間で通信セッションを確立する。ここで、ゲートウェイ装置200とクラウドサーバー400との間で確立される通信セッションを第1通信セッションという。これにより、ファイアーウォールを通過するトンネル接続が完了する。
ゲートウェイ装置200は、管理サーバー300から接続要求を受信すると、接続要求に含まれるMFP100のアドレス情報に含まれるMFP100の装置識別情報に基づいてMFP100を特定し、MFP100との間で通信セッションを確立する。ここで、ゲートウェイ装置200とMFP100との間で確立される通信セッションを第2通信セッションという。
ゲートウェイ装置200は、クラウドサーバー400との間で確立された第1通信セッションと、MFP100との間で確立された第2通信セッションとを用いて、クラウドサーバー400とMFP100との間の通信を中継する。例えば、第1通信セッションと、第2通信セッションとを接続することによって、クラウドサーバー400とMFP100との間の通信を中継する。
なお、トンネル接続の方法は、これに限定されることなく、他の方法を用いてもよい。
クラウドサーバー400が提供するサービスは、例えば、クラウドサーバー400がMFP100のプログラムのバージョンを管理し、バージョンアップに基づくアップデートを実行するプログラム管理サービス、クラウドサーバー400をファイルサーバーとして機能させるサービス、画像データに対して画像処理を実行するサービスを含む。画像処理は、限定するものではないが、例えば、写真が表された画像データを先鋭化、スムージング等の処理を実行する処理であってもよいし、文字が表された画像データを文字認識する処理であってもよいし、言語を他の言語に翻訳する処理であってもよい。
MFP100,100A,100Bのハードウェア構成および機能は同じなので、ここでは特に言及しない限りMFP100を例に説明する。
図2は、ゲートウェイ装置のハードウェア構成の概要の一例を示すブロック図である。図2を参照して、本実施の形態におけるゲートウェイ装置200は、ゲートウェイ装置200の全体を制御するためのCPU(Central Processing Unit)201と、CPU201が実行するためのプログラム等を記憶するROM(Read Only Memory)202と、CPU201の作業領域として用いられるRAM(Random Access Memory)203と、データを不揮発的に記憶するフラッシュメモリ204と、第1通信部205と、第2通信部206と、外部記憶装置209と、を含む。
第1通信部205は、ゲートウェイ装置200をインターネット5に接続するための通信インターフェース(I/F)である。第2通信部206は、ゲートウェイ装置200をLAN3に接続するための通信インターフェース(I/F)である。
フラッシュメモリ204は、CPU201が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。CPU201は、フラッシュメモリ204に記録されたプログラムを、RAM203にロードして実行する。外部記憶装置209は、ゲートウェイ装置200に着脱自在であり、プログラムを記憶したCD−ROM(Compact Disk ROM)209Aが装着可能である。CPU201は、外部記憶装置209を介してCD−ROM209Aにアクセス可能である。CPU201は、外部記憶装置209に装着されたCD−ROM209Aに記録された中継プログラムを、RAM203にロードして実行することが可能である。
なお、CPU201が実行するプログラムとして、フラッシュメモリ204またはCD−ROM209Aに記録されたプログラムについて説明したが、インターネット5に接続された他のコンピューターが、フラッシュメモリ204に記憶されたプログラムを書換えたプログラム、または、追加して書き込んだ新たなプログラムであってもよい。さらに、ゲートウェイ装置200が、インターネット5に接続された他のコンピューターからダウンロードしたプログラムでもよい。ここでいうプログラムは、CPU201が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
なお、CPU201が実行するプログラムを記憶する媒体としては、CD−ROM209Aに限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)などの半導体メモリであってもよい。
図3は、MFPのハードウェア構成の概要の一例を示すブロック図である。図3を参照して、MFP100は、メイン回路110と、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、画像が形成された用紙を処理する後処理部155と、ユーザーインターフェースとしての操作パネル160とを含む。
後処理部155は、画像形成部140により画像が形成された1以上の用紙を並び替えて排紙するソート処理、パンチ穴加工するパンチ処理、ステープル針を打ち込むステープル処理を実行する。
メイン回路110は、CPU111と、通信インターフェース(I/F)部112と、ROM113と、RAM114と、大容量記憶装置としてのハードディスクドライブ(HDD)115と、ファクシミリ部116と、CD−ROM118が装着される外部記憶装置117と、を含む。CPU111は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、後処理部155および操作パネル160と接続され、MFP100の全体を制御する。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部130から連続的に送られてくる読取データ(画像データ)を一時的に記憶する。
操作パネル160は、MFP100の上面に設けられ、表示部161と操作部163とを含む。表示部161は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等の表示装置であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部163は、複数のキーからなるハードキー部167を備え、キーに対応するユーザーの操作による各種の指示、文字、数字などのデータの入力を受け付ける。操作部163は、表示部161上に設けられたタッチパネル165をさらに含む。
通信I/F部112は、MFP100をLAN3に接続するためのインターフェースである。CPU111は、通信I/F部112を介して、LAN3に接続された装置との間で通信し、データを送受信する。さらに、通信I/F部112は、ゲートウェイ装置200を介して、インターネットに接続されたコンピューター、例えば、管理サーバー300、クラウドサーバー400と通信が可能である。
ファクシミリ部116は、公衆交換電話網(PSTN)に接続され、PSTNにファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部116は、受信したファクシミリデータを、HDD115に記憶する、または画像形成部140に出力する。画像形成部140は、ファクシミリ部116により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部116は、HDD115に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
外部記憶装置117は、CD−ROM118が装着される。CPU111は、外部記憶装置117を介してCD−ROM118にアクセス可能である。CPU111は、外部記憶装置117に装着されたCD−ROM118に記録されたプログラムをRAM114にロードして実行する。なお、CPU111が実行するプログラムを記憶する媒体としては、CD−ROM118に限られず、光ディスク(MO/MD/DVD)、ICカード、光カード、マスクROM、EPROM、EEPROMなどの半導体メモリであってもよい。
また、CPU111は、HDD115に記憶されたプログラムをRAM114にロードして実行するようにしてもよい。この場合、LAN3またはインターネット5に接続された他のコンピューターが、MFP100のHDD115に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、MFP100が、LAN3またはインターネット5に接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD115に記憶するようにしてもよい。ここでいうプログラムは、CPU111が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図4は、本実施の形態における管理サーバーのハードウェア構成の概要の一例を示すブロック図である。図4を参照して、管理サーバー300は、管理サーバー300の全体を制御するためのCPU301と、CPU301が実行するためのプログラムを記憶するROM302と、CPU301の作業領域として使用されるRAM303と、データを不揮発的に記憶するHDD304と、CPU301をインターネット5に接続する通信部305と、情報を表示する表示部306と、ユーザーの操作の入力を受け付ける操作部307と、外部記憶装置309と、を含む。
外部記憶装置309は、CD−ROM309Aが装着される。CPU301は、外部記憶装置309を介してCD−ROM309Aにアクセス可能である。CPU301は、外部記憶装置309に装着されたCD−ROM309Aに記録されたプログラムをRAM303にロードして実行する。なお、CPU301が実行するプログラムを記憶する媒体としては、CD−ROM309Aに限られず、光ディスク、ICカード、光カード、マスクROM、EPROM、EEPROMなどの半導体メモリであってもよい。
また、CPU301が実行するプログラムは、CD−ROM309Aに記録されたプログラムに限られず、HDD304に記憶されたプログラムをRAM303にロードして実行するようにしてもよい。この場合、インターネット5に接続された他のコンピューターが、管理サーバー300のHDD304に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、管理サーバー300が、インターネット5に接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD304に記憶するようにしてもよい。ここでいうプログラムは、CPU301が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図5は、本実施の形態におけるクラウドサーバーのハードウェア構成の概要の一例を示すブロック図である。図5を参照して、クラウドサーバー400は、クラウドサーバー400の全体を制御するためのCPU401と、CPU401が実行するためのプログラムを記憶するROM402と、CPU401の作業領域として使用されるRAM403と、データを不揮発的に記憶するHDD404と、CPU401をインターネット5に接続する通信部405と、情報を表示する表示部406と、ユーザーの操作の入力を受け付ける操作部407と、外部記憶装置409と、を含む。
外部記憶装置409は、CD−ROM409Aが装着される。CPU401は、外部記憶装置409を介してCD−ROM409Aにアクセス可能である。CPU401は、外部記憶装置409に装着されたCD−ROM409Aに記録されたプログラムをRAM403にロードして実行する。なお、CPU401が実行するプログラムを記憶する媒体としては、CD−ROM409Aに限られず、光ディスク、ICカード、光カード、マスクROM、EPROM、EEPROMなどの半導体メモリであってもよい。
また、CPU401が実行するプログラムは、CD−ROM409Aに記録されたプログラムに限られず、HDD404に記憶されたプログラムをRAM403にロードして実行するようにしてもよい。この場合、インターネット5に接続された他のコンピューターが、クラウドサーバー400のHDD404に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、クラウドサーバー400が、インターネット5に接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD404に記憶するようにしてもよい。ここでいうプログラムは、CPU401が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図6は、管理サーバーが備えるCPUの機能の一例を示すブロック図である。図6に示す機能は、管理サーバー300が備えるCPU301が、ROM302、HDD304またはCD−ROM309Aに記憶されたプログラムを実行することにより、CPU301に形成される機能である。図6を参照して、管理サーバー300が備えるCPU301は、サーバー側確立部351と、グローバル確立部353と、を含む。
サーバー側確立部351は、通信部305を制御して、ゲートウェイ装置200との間で通信セッションを確立する。ここで確立する通信セッションは、常時接続セッションである。サーバー側確立部351は、ゲートウェイ装置200から通信セッションの確立要求を受信することに応じて、通信セッションを確立する。サーバー側確立部351は、装置識別情報受信部371と、トンネル接続要求部373と、接続結果受信部375と、装置情報管理部377と、課金部378と、を含む。
装置識別情報受信部371は、ゲートウェイ装置200との間で確立された常時接続セッションを介して、ゲートウェイ装置200からMFP100,100A,100Bそれぞれの装置識別情報を受信し、受信される装置識別情報と、ゲートウェイ装置200の装置識別情報と、をグローバル確立部353に出力する。ゲートウェイ装置200の機能の詳細は後述するが、ゲートウェイ装置200は、管理サーバー300との間で常時接続セッションが確立されると、LAN3に接続された装置、ここでは、MFP100,100A,100Bそれぞれに対応する装置識別情報を送信する。MFP100,100A,100Bそれぞれの装置識別情報は、限定するものではないが、MFP100,100A,100BそれぞれにLAN3において割り当てられたローカルIP(Internet Protocol)アドレスである。ゲートウェイ装置200の装置識別情報は、限定するものではないが、インターネット5においてゲートウェイ装置200に割り当てられたグローバルIPアドレスである。
グローバル確立部353は、通信部305を制御して、ファイアーウォールの外部に位置するコンピューターとの間で通信セッションを確立する。ここでは、クラウドサーバー400との間で通信セッションを確立する場合を説明する。ここで確立される通信セッションは、グローバルセッションである。グローバル確立部353は、通信部305を制御して、クラウドサーバー400から通信セッションの確立要求を受信することに応じて、クラウドサーバー400との間でグローバルセッションを確立する。グローバル確立部353は、装置識別情報通知部381と、接続要求受信部383と、接続確認部385と、停止期間通知部387と、を含む。
装置識別情報通知部381は、装置識別情報受信部371からゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報とが入力される。装置識別情報通知部381は、グローバルセッションを介して、クラウドサーバー400にゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報とを送信する。
接続要求受信部383は、クラウドサーバー400がグローバルセッションを介して送信する接続要求を受信し、受信された接続要求を、サーバー側確立部351に出力する。
接続要求は、MFP100のアドレス情報と、クラウドサーバー400のアドレス情報とを含む。MFP100のアドレス情報は、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む。クラウドサーバー400のアドレス情報は、MFP100からクラウドサーバー400にアクセスするためのURLである。URLには、クラウドサーバー400のアドレス(ドメイン名)、ウェブページの識別子、クラウドサーバー400が実行するジョブの識別子(ジョブID)、および待ち受けポートのポート番号が含まれる。
トンネル接続要求部373は、接続要求受信部383から接続要求が入力されることに応じて、常時接続セッションを介して、トンネル接続要求をゲートウェイ装置200に送信する。トンネル接続要求は、常時接続セッションにより定まるプロトコルに適合するように接続要求をカプセル化したパケットとして送信される。トンネル接続要求を受信するゲートウェイ装置200は、MFP100との間で通信セッションを確立し、その結果を示すトンネル接続結果を返信する。
接続結果受信部375は、常時接続セッションを介して、ゲートウェイ装置200が送信するトンネル接続結果を受信する。トンネル接続結果は、MFP100のアドレス情報を含み、トンネル接続に成功したことを示す情報と、トンネル接続に失敗したことを示す情報とのいずれかを含む。トンネル接続に失敗する場合は、例えば、MFP100に電源が投入されていない場合、MFP100が通信できないトラブル状態の場合等である。接続結果受信部375は、トンネル接続結果をグローバル確立部353および装置情報管理部377に出力する。
装置情報管理部377は、MFP100,100A,100Bごとに装置状態情報をHDD304に記憶する。装置状態情報は、MFP100,100A,100Bそれぞれのアドレス情報と、トンネル接続の成功または失敗のいずれかを示す接続可否と、を関連付けたデータである。装置情報管理部377は、接続結果受信部375からトンネル接続結果が入力されることに応じて、HDD304に記憶された装置状態情報を更新する。トンネル接続結果がトンネル接続に成功したことを示す情報を含むならば、HDD304に記憶されている装置状態情報のうち、トンネル接続結果に含まれるアドレス情報と同じアドレス情報を含む装置状態情報の接続可否を、トンネル接続に成功したことを示す情報で更新することにより、装置状態情報を更新する。また、トンネル接続結果がトンネル接続に失敗したことを示す情報を含むならば、HDD304に記憶されている装置状態情報のうち、トンネル接続結果に含まれるアドレス情報と同じアドレス情報を含む装置状態情報の接続可否を、トンネル接続に失敗したことを示す情報で更新する。
課金部378は、常時接続セッションを介して、ゲートウェイ装置200が送信する実績情報を受信する。実績情報は、MFP100,100A,100Bいずれかのアドレス情報と、その装置が実行した処理の処理識別情報と、処理量と、を含む。課金部378は、実績情報を受信すると、実績情報に基づいて課金情報を生成し、生成された課金情報をHDD304に記憶する。課金情報は、MFP100,100A,100Bいずれかのアドレス情報と、その装置が実行した処理に対して課される料金とを含む。例えば、MFP100がプリント処理を実行する場合を例に説明する。この場合の一例として、MFP100がプリント処理を実行する場合における用紙1枚当たりの単価が定められており、実績情報が、MFP100のアドレス情報と、プリント処理の処理識別情報と、処理量としてプリント枚数とを含む場合を例に説明する。課金部378は、実績情報に含まれるプリント枚数に単価を乗算して算出される料金を算出し、MFP100のアドレス情報と、算出された料金とを含む課金情報とを生成し、HDD304に記憶する。
グローバル確立部353の接続確認部385は、接続結果受信部375から入力されるトンネル接続結果がトンネル接続に成功したことを示す情報を含む場合には、グローバルセッションを介してクラウドサーバー400に接続が成功したことを示す信号を送信する。クラウドサーバー400においては、クラウドサーバー400のユーザーに接続が成功したことを示すメッセージを表示するなどして、接続が成功したことを通知することができる。接続確認部385は、接続結果受信部375から入力されるトンネル接続結果がトンネル接続に失敗したことを示す情報を含む場合には、グローバルセッションを介してクラウドサーバー400に接続が失敗したことを示すエラー信号を送信する。クラウドサーバー400においては、クラウドサーバー400のユーザーに接続が失敗したことを示すメッセージを表示するなどして、接続が失敗したことを通知することができる。
停止期間通知部387は、管理サーバー300がサービスの提供を停止する停止期間を、クラウドサーバー400に通知する。管理サーバー300がサービスの提供を停止する期間は、例えば、管理サーバー300がプログラムのバージョンアップする場合におけるバージョンアップする期間、管理サーバー300をメンテナンスする場合におけるメンテナンス中の期間であり、管理サーバーが機能しなくなる期間である。停止期間通知部387は、グローバル確立部353によってクラウドサーバー400との間でグローバルセッションが確立された段階で、停止期間をクラウドサーバー400に送信してもよいし、任意のタイミングで、クラウドサーバー400に停止期間を送信するようにしてもよい。
図7は、ゲートウェイ装置が備えるCPUの機能の一例を示すブロック図である。図7に示す機能は、ゲートウェイ装置200が備えるCPU201が、ROM202、フラッシュメモリ204またはCD−ROM209Aに記憶された中継プログラムを実行することにより、CPU201に形成される機能である。図7を参照して、ゲートウェイ装置200が備えるCPU201は、接続装置情報取得部261と、実績情報収集部262と、常時接続セッション確立部251と、第1セッション確立部259と、第2セッション確立部263と、中継部270と、を含む。
また、CPU201は、第1通信制御部250と、第2通信制御部260と、を含む。第1通信制御部250は、第1通信部205を制御し、インターネット5に接続されたコンピューターとの間の通信を制御する。第1通信制御部250は、常時接続セッション確立部251と、第1セッション確立部259と、中継部270の一部と、を含む。
第2通信制御部260は、第2通信部206を制御し、LAN3に接続されたMFP100,100A,100Bとの間の通信を制御する。第2通信制御部260は、接続装置情報取得部261と、実績情報収集部262と、第2セッション確立部263と、中継部270の一部と、を含む。
接続装置情報取得部261は、ファイアーウォールの内側のLAN3に接続された装置の装置識別情報を取得する。接続装置情報取得部261は、所定のタイミングで、LAN3に接続された装置を探索し、検出される装置の装置識別情報を取得する。所定のタイミングは、任意に定めることができるが、例えば、ゲートウェイ装置200に電源が投入された時点、または、予め定められた時とすればよい。ここでは、LAN3に接続された装置としてMFP100,100A,100Bを検出する場合を例に説明する。接続装置情報取得部261は、第2通信部206を制御してLAN3に接続された装置として検出されるMFP100,100A,100Bそれぞれの装置識別情報を取得する。MFP100,100A,100Bそれぞれの装置識別情報は、例えば、ローカルIPアドレスである。接続装置情報取得部261は、取得された装置識別情報を常時接続セッション確立部251に出力する。
実績情報収集部262は、ファイアーウォールの内側のLAN3に接続された装置の実績情報を取得する。実績情報は、MFP100,100A,100Bいずれかの装置識別情報と、その装置が実行した処理の処理識別情報と、処理量と、を含む。実績情報収集部262は、第2通信部206を制御してLAN3に接続された装置として検出されるMFP100,100A,100Bそれぞれから送信される実績情報を受信する場合、実績情報を送信してきた装置に受信確認を返信するとともに、受信された実績情報を常時接続セッション確立部251に出力する。換言すれば、実績情報収集部262は、管理サーバー300に代わって、MFP100,100A,100Bそれぞれから実績情報を受信する。
常時接続セッション確立部251は、接続装置情報取得部261からMFP100,100A,100Bそれぞれの装置識別情報が入力される。常時接続セッション確立部251は、第1通信部205を制御して、管理サーバー300に通信セッションの確立要求を送信し、管理サーバー300との間で通信セッションを確立する。ここで確立される通信セッションは、常時接続される常時接続セッションである。常時接続セッションは、特に限定するものではないが、例えば、XMPP(eXtensible Messaging and Presence Protocol)に基づくメッセージセッションである。フラッシュメモリ204に管理サーバー300のグローバルIPアドレスが予め記憶されており、常時接続セッション確立部251は、フラッシュメモリ204に記憶されているグローバルIPアドレスを用いて管理サーバー300に通信セッションの確立要求を送信し、管理サーバー300と所定のネゴシエーションをすることによって常時接続セッションを確立する。管理サーバー300がサービスを停止する場合、常時接続セッションが切断されるが、常時接続セッション確立部251は、常時接続セッションが切断された後は、管理サーバー300との間で通信セッションを確立されるまで、所定時間間隔で、管理サーバー300に通信セッションの確立要求を送信し、常時接続セッションの確立を試みる。
常時接続セッション確立部251は、装置識別情報送信部253と、実績情報転送部254と、トンネル接続要求受信部255と、接続結果送信部257と、を含む。装置識別情報送信部253は、管理サーバー300にファイアーウォール内部のLAN3に接続された装置を通知するために、接続装置情報取得部261から入力されるMFP100,100A,100Bそれぞれの装置識別情報を、常時接続セッションを介して管理サーバー300に送信する。
実績情報転送部254は、実績情報収集部262から実績情報が入力される。実績情報転送部254は、実績情報収集部262から実績情報が入力されることに応じて、実績情報を常時接続セッションを介して管理サーバー300に送信する。実績情報転送部254は、常時接続セッションが確立されていない場合、実績情報収集部262から入力される実績情報を次に常時接続セッションが確立されるまでRAM203に一時記憶し、次に常時接続セッションが確立されることに応じて、RAM203に一時記憶された実績情報を、常時接続セッションを介して管理サーバー300に送信する。
トンネル接続要求受信部255は、常時接続セッションを介して、管理サーバー300からトンネル接続要求を受信する。トンネル接続要求は、管理サーバー300がクラウドサーバー400から受信した接続要求を含む。接続要求は、接続元のアドレス情報と、接続先のアドレス情報とを含む。ここでは、接続元のアドレス情報をMFP100のアドレス情報とし、接続先のアドレス情報をクラウドサーバー400のアドレス情報とする場合を例に説明する。MFP100のアドレス情報は、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む。クラウドサーバー400のアドレス情報は、MFP100からクラウドサーバー400にアクセスするためのURLである。
トンネル接続要求受信部255は、トンネル接続要求を受信することに応じて、トンネル接続要求を識別するための接続識別情報とトンネル接続要求に含まれる接続先のアドレス情報とを第1セッション確立部259に出力し、トンネル接続要求を識別するための接続識別情報と接続元のアドレス情報とを第2セッション確立部263に出力し、接続結果の送信指示を接続結果送信部257に出力する。
第1セッション確立部259は、トンネル接続要求受信部255から接続識別情報と接続先のアドレス情報とが入力されることに応じて、第1通信部205を制御して、接続先のアドレス情報を用いて確立要求を送信する。ここでは、接続先のアドレス情報は、クラウドサーバー400のアドレス情報なので、第1セッション確立部259は、確立要求をクラウドサーバー400に送信し、クラウドサーバー400との間で通信セッションを確立する。確立要求は、具体的には、トンネル接続要求受信部255から入力されるクラウドサーバー400のアドレス情報であるURLを含むGETコマンドである。第1セッション確立部259は、クラウドサーバー400のアドレス情報であるURLを含むGETコマンドを送信することによって、URLで特定されるクラウドサーバー400との間で、HTTPトンネルの通信セッションを確立する。ここで確立する通信セッションは、第1通信セッションである。第1セッション確立部259は、第1通信セッションを確立すると、第1通信セッションを識別するためのセッション識別情報と接続識別情報とを中継部270および接続結果送信部257に出力する。
第2セッション確立部263は、トンネル接続要求受信部255から接続識別情報と接続元のアドレス情報とが入力されることに応じて、第2通信部206を制御して、接続元のアドレス情報を用いて確立要求を送信する。ここでは、接続元のアドレス情報はMFP100のアドレス情報なので、第2セッション確立部263は、MFP100に確立要求を送信し、MFP100との間で通信セッションを確立する。ここで確立される通信セッションは第2通信セッションである。第2通信セッションは、特に限定するものではないが、LAN3において用いられる通信プロトコルに準じた通信セッションであればよい。第2セッション確立部263は、第2通信セッションを識別するためのセッション識別情報と接続識別情報とを中継部270に出力する。
第2セッション確立部263は、第2通信セッションが確立され、MFP100の装置情報を取得する場合、接続要求のMFP100のアドレス情報と、トンネル接続に成功したことを示す情報とを含むトンネル接続結果を、接続結果送信部257に出力する。第2セッション確立部263は、第2通信セッションが確立されない場合、接続要求のMFP100のアドレス情報と、トンネル接続に失敗したことを示す情報とを含むトンネル接続結果を、接続結果送信部257に出力する。第2セッション確立部263によって第2通信セッションが確立されない場合は、MFP100に電源が投入されていない場合、または、MFP100が通信できないトラブルが発生している場合等である。
接続結果送信部257は、トンネル接続要求受信部255から接続結果の送信指示が入力された後に、第1セッション確立部259から第1通信セッションのセッション識別情報が入力され、かつ第2セッション確立部263からトンネル接続結果が入力される場合、トンネル接続結果を管理サーバー300に常時接続セッションを介して送信する。
中継部270は、第1セッション確立部259から第1通信セッションのセッション識別情報と接続識別情報が入力され、第2セッション確立部263から第2通信セッションのセッション識別情報と接続識別情報が入力される。中継部270は、第1セッション確立部259により確立された第1通信セッションと、第2セッション確立部263により確立された第2通信セッションとを用いて、クラウドサーバー400とMFP100との間の通信を中継する。中継部270は、それぞれに対応する接続識別情報が同じ第1通信セッションのセッション識別情報と第2通信セッションのセッション識別情報とを対応付け、対応付けられた2つのセッション識別情報で特定される第1通信セッションと第2通信セッションとを用いて、トンネル接続要求に含まれる接続先のアドレス情報と接続元のアドレス情報でそれぞれ特定される2つの装置間の通信を中継する。これにより、第1セッション確立部259によって複数の第1通信セッションが確立され、第2セッション確立部263により複数の第2通信セッションが確立される場合でも、トンネル接続要求に含まれる接続先のアドレス情報と接続元のアドレス情報でそれぞれ特定される2つの装置間の通信の中継が可能となる。
例えば、トンネル接続要求に含まれる接続先のアドレス情報がクラウドサーバー400のアドレス情報で、接続元のアドレス情報がMFP100のアドレス情報の場合、中継部270は、クラウドサーバー400との間で確立された第1通信セッションと、MFP100との間で確立された第2通信セッションを用いて通信を中継するので、クラウドサーバー400とMFP100との間でデータの送受信が可能となる。中継部270は、第1通信セッションと第2通信セッションとを関連付け、第1通信セッションを介してクラウドサーバー400から受信されるデータを、第2通信セッションを介してMFP100に送信し、第2通信セッションを介してMFP100から受信されるデータを、第1通信セッションを介してクラウドサーバー400に送信する。
図8は、クラウドサーバーが備えるCPUの機能の一例を示すブロック図である。図8に示す機能は、クラウドサーバー400が備えるCPU401が、ROM402、HDD404またはCD−ROM409Aに記憶された制御プログラムを実行することにより、CPU401に形成される機能である。図8を参照して、クラウドサーバー400が備えるCPU401は、停止期間取得部451と、アクセス元特定部453と、出力先指定受付部455と、ジョブ生成部457と、セッション決定部459と、ジョブ送信部461と、実行結果受信部463と、クラウド側セッション確立部471と、を含む。
停止期間取得部451は、管理サーバー300から停止期間を取得する。通信部405が管理サーバー300から停止期間を受信すると、受信された停止期間を取得する。
アクセス元特定部453は、クラウドサーバー400にアクセスするアクセス元を特定する。クラウドサーバー400は、インターネット5またはLAN3に接続されたPCからアクセスを受け付ける。例えば、クラウドサーバー400が提供するサービスに対して、アクセス元としてユーザーを登録する場合、予め登録されたユーザーのユーザー識別情報とパスワードとの組をHDD404に記憶しておく。クラウドサーバー400は、PCからアクセスがあると、ログイン画面をPCに送信し、そのPCから受信されるユーザー識別情報とパスワードとの組がHDD404に記憶されている場合に、アクセス元のユーザーを特定する。また、クラウドサーバー400が提供するサービスに対して、アクセス元として装置を登録する場合、その装置の装置識別情報をHDD404に記憶しておく。クラウドサーバー400は、アクセスしてきた装置の装置識別情報がHDD404に記憶されている場合に、アクセスしてきた装置をアクセス元として特定する。
アクセス元特定部453は、アクセス元を特定する場合、そのアクセス元を識別するためのアクセス元識別情報を、ジョブ生成部457および出力先指定受付部455に出力する。アクセス元識別情報は、アクセス元としてユーザーを特定する場合には、そのユーザーが操作するPCを識別するための装置識別情報であり、アクセス元として装置を特定する場合には、その装置を識別するための装置識別情報である。装置識別情報は、ここでは、ネットワークアドレスとしている。また、アクセス元特定部453は、複数のアクセス元を特定する場合、複数のアクセス元をそれぞれ識別するための複数のアクセス元識別情報を、ジョブ生成部457および出力先指定受付部455に出力する。
ジョブ生成部457は、アクセス元特定部453からアクセス元識別情報が入力される。ジョブ生成部457は、アクセス元識別情報で特定されるアクセス元から受信される操作に従って、ジョブを生成する。例えば、アクセス元としてユーザーが特定される場合に、そのユーザーがPCを用いてクラウドサーバー400に、データとプリント指示を送信する場合、受信されたデータをプリントするためのジョブを生成する。ジョブ生成部457は、生成されたジョブをジョブ送信部461に出力するとともに、アクセス元識別情報とそのジョブを特定するためのジョブIDとの組を出力先指定受付部455に出力する。ジョブ生成部457は、アクセス元特定部453から複数のアクセス元識別情報が入力される場合、複数のアクセス元識別情報でそれぞれ特定される複数のアクセス元それぞれから受信される操作に従って、複数のアクセス元にそれぞれ対応する複数のジョブを生成する。ジョブ生成部457は、複数のジョブをジョブ送信部461に出力するとともに、複数のアクセス元識別情報それぞれについて、そのアクセス元識別情報と対応するジョブのジョブIDとの組を出力先指定受付部455に出力する。
クラウド側セッション確立部471は、通信部405を制御して、管理サーバー300との間でグルーバルセッションを確立する。クラウド側セッション確立部471は、確立したグローバルセッションのセッション識別情報を出力先指定受付部455に出力する。
出力先指定受付部455は、アクセス元特定部453からアクセス元識別情報が入力され、クラウド側セッション確立部471からグルーバルセッションのセッション識別情報が入力され、ジョブ生成部457からアクセス元識別情報とジョブIDとの組が入力される。出力先指定受付部455は、アクセス元識別情報で特定されるアクセス元から受信される操作に従って、出力先を特定する。出力先指定受付部455は、通信部405を制御して、クラウド側セッション確立部471から入力されるセッション識別情報で特定されるグローバルセッションを介して、ゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報と、を受信する。出力先指定受付部455は、ゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択可能な装置選択画面を、通信部305を制御して、アクセス元特定部453から入力されるアクセス元識別情報で特定されるアクセス元のPCに送信する。出力先指定受付部455は、アクセス元のPCからゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択する操作を受信することに応じて、選択された装置を出力先として特定する。例えば、PCを操作するユーザーが、装置選択画面に従って、ゲートウェイ装置200とMFP100とを選択する操作をPCに入力すれば、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを選択する操作を受信するので、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とで定まるMFP100を出力先として特定する。出力先は、ジョブIDで特定されるジョブを実行させる装置である。以下、ジョブIDで特定されるジョブを実行させる装置を、ジョブIDに対応する出力先という。
出力先指定受付部455は、アクセス元特定部453から複数のアクセス元識別情報が入力される場合、ジョブ生成部457からアクセス元識別情報とジョブIDとの組が複数入力される。出力先指定受付部455は、複数の組ごとに、その組に含まれるアクセス元識別情報で特定されるアクセス元から受信される操作に従って、出力先を特定する。従って、出力先指定受付部455は、複数のアクセス元識別情報にそれぞれ対応する複数のジョブIDごとに、そのジョブIDに対応する出力先を特定する。
なお、出力先指定受付部455は、ゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報とを、管理サーバー300から予め受信してHDD404に記憶しておくようにしてもよい。また、ゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報とを、クラウドサーバー400を管理する管理者が入力するようにして、それらをHDD404に記憶しておくようにしてもよい。
停止期間取得部451により取得された停止期間に基づいて、管理サーバー300がサービスを提供している期間が特定される。現在日時に基づいて、現在日時が停止期間に含まれる期間でなければ、停止期間でない期間である。以下、現在日時が停止期間でない場合と、現在日時が停止期間の場合とに分けて説明する。
<現在日時が停止期間でない場合>
出力先指定受付部455は、停止期間でない場合、ジョブIDに対応する出力先を特定することに応じて、特定した出力先のアドレス情報と、ジョブIDとを含む接続指示をクラウド側セッション確立部471に出力する。出力先指定受付部455は、複数のジョブIDにそれぞれに対応する複数の出力先を特定する場合、複数のジョブIDごとに、そのジョブIDに対応する出力先のアドレス情報と、そのジョブIDとを含む接続指示をクラウド側セッション確立部471に出力する。ここでは、アクセス元特定部453によって出力先にMFP100が選択され、出力先のアドレス情報が、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む場合を例に説明する。
クラウド側セッション確立部471は、トンネル接続部473と、クラウド側切断部479と、接続状態関連付部481と、を含む。トンネル接続部473は、接続要求部475と、確立要求受信部477と、を含む。
接続要求部475は、出力先指定受付部455から接続指示が入力されることに応じて、接続指示に含まれるジョブIDに基づいて接続先のアドレス情報を決定し、接続指示に含まれる出力先のアドレス情報を接続元のアドレス情報に決定し、接続先のアドレス情報と接続元のアドレス情報とを含む接続要求を、通信部405を制御して、管理サーバー300にグローバルセッションを介して送信する。接続元のアドレス情報は、出力先のアドレス情報であり、ここでは、MFP100のアドレス情報である。MFP100のアドレス情報は、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む。接続先のアドレス情報は、クラウドサーバー400のアドレス情報であり、ジョブIDを含む。クラウドサーバー400のアドレス情報は、MFP100からクラウドサーバー400にアクセスするためのURLである。URLには、クラウドサーバー400のネットワークアドレス(ドメイン名)、ウェブページの識別子、接続指示に含まれるジョブID、および待ち受けポートのポート番号が含まれる。接続要求部475は、接続要求を送信することに応じて、接続先のアドレス情報および接続元のアドレス情報を、確立要求受信部477に出力する。接続要求部475は、出力先指定受付部455から複数の接続指示が入力される場合、複数の接続指示にそれぞれ対応する複数の接続要求を、グローバルセッションを介して管理サーバー300に送信する。接続要求部475は、出力先指定受付部455から複数の接続指示が入力される場合、複数の接続指示にそれぞれ対応する、接続先のアドレス情報および接続元のアドレス情報の組を、確立要求受信部477に出力する。
確立要求受信部477は、接続要求部475から接続先のアドレス情報および接続元のアドレス情報が入力された後に、通信部405を制御して、接続先のアドレス情報と同じアドレス情報を含む確立要求を受信することに応じて、その確立要求を送信してきた装置との間で、通信セッションを確立する。上述したように、確立要求は、管理サーバー300に送信される接続要求を受信するゲートウェイ装置200から送信される。ここでは、接続先のアドレス情報を、クラウドサーバー400のアドレス情報としており、クラウドサーバー400のアドレス情報を、ジョブIDを含むURLとしている。この場合の確立要求は、クラウドサーバー400のアドレス情報であるURLを含むGETコマンドとしている。確立要求受信部477は、確立要求を送信してきたゲートウェイ装置200との間で通信セッションを確立する。ここで、ゲートウェイ装置200との間で確立される通信セッションは第1通信セッションである。また、確立要求であるGETコマンドに含まれるURLは、ジョブIDを含むので、確立要求がジョブ生成部457によって生成されたジョブの何れに対応する確立要求であるかを判別することが可能である。確立要求受信部477は、ゲートウェイ装置200との間で確立された第1通信セッションのセッション識別情報と、接続先のアドレス情報に含まれるジョブIDと、接続元のアドレス情報と、の組を、ジョブ送信部461および接続状態関連付部481に出力する。
確立要求受信部477は、接続要求部475から接続先のアドレス情報および接続元のアドレス情報の組が複数入力される場合、複数の組ごとに、その組に含まれる接続先のアドレス情報と同じアドレス情報を含む確立要求を受信することに応じて、その確立要求を送信してきた装置との間で、第1通信セッションを確立し、その第1通信セッションのセッション識別情報と、その組に含まれる接続先のアドレス情報に含まれるジョブIDと、その組に含まれる接続元のアドレス情報とを、ジョブ送信部461および接続状態関連付部481に出力する。
接続状態関連付部481は、確立要求受信部477から第1通信セッションのセッション識別情報と、ジョブIDと、接続元のアドレス情報と、の組が入力されることに応じて、第1通信セッションのセッション識別情報と、接続元のアドレス情報とを関連付ける。具体的には、接続状態関連付部481は、第1通信セッションのセッション識別情報と、接続元のアドレス情報とを含む出力先関連付情報をHDD404に記憶する。また、接続状態関連付部481は、第1通信セッションのセッション識別情報と、接続元のアドレス情報との組をセッション決定部459に出力する。
ジョブ送信部461は、確立要求受信部477から第1通信セッションのセッション識別情報と、ジョブIDと、接続元のアドレス情報と、の組が入力され、ジョブ生成部457からジョブが入力される。ジョブ送信部461は、確立要求受信部477から入力される第1通信セッションのセッション識別情報と、ジョブIDと、接続元のアドレス情報との組のうちからジョブ生成部457から入力されるジョブのジョブIDを含む組を特定し、特定した組に含まれるセッション識別情報を特定する。ジョブ送信部461は、通信部305を制御して、ジョブ生成部457から入力されるジョブを、特定されたセッション識別情報で特定される第1通信セッションを介して、ゲートウェイ装置200に送信する。ジョブ送信部461は、ジョブを送信することに応じて、ジョブIDとセッション識別情報との組を実行結果受信部463に出力する。
ジョブ送信部461は、確立要求受信部477から第1通信セッションのセッション識別情報と、ジョブIDと、接続元のアドレス情報と、の組が複数入力される場合、ジョブ生成部457から複数のジョブIDが入力される。ジョブ送信部461は、ジョブ生成部457から入力される複数のジョブごとに、そのジョブのジョブIDを含む組を複数の組のうちから特定し、特定した組に含まれるセッション識別情報を特定する。ジョブ送信部461は、通信部305を制御して、ジョブ生成部457から入力されるジョブを、そのジョブIDに対して特定されたセッション識別情報で特定される第1通信セッションを介して、ゲートウェイ装置200に送信する。ジョブ送信部461は、ジョブを送信することに応じて、そのジョブのジョブIDとセッション識別情報との組を実行結果受信部463に出力する。
ジョブ送信部461によってゲートウェイ装置200に第1通信セッションを介して送信されるジョブは、ゲートウェイ装置200によって第1通信セッションを介して受信され、第2通信セッションを介して、MFP100に送信される。MFP100においては、ゲートウェイ装置200から受信されるジョブを実行し、実行結果をゲートウェイ装置200に送信する。ゲートウェイ装置200においては、MFP100から第2通信セッションを介して受信される実行結果を、第1通信セッションを介してクラウドサーバー400に送信する。
実行結果受信部463は、ジョブ送信部461からジョブIDとセッション識別情報との組が入力されることに応じて、通信部405を制御して、セッション識別情報で特定される第1通信セッションを介して実行結果を受信する。実行結果はジョブIDを含む。実行結果受信部463は、ジョブ送信部461から入力されるジョブIDと同じジョブIDを含む実行結果を受信することに応じて、クラウド側セッション確立部471に切断指示を出力する。切断指示は、実行結果に含まれるジョブIDと組になるセッション識別情報を含む。
クラウド側切断部479は、実行結果受信部463から切断指示が入力されることに応じて、切断指示に含まれるセッション識別情報で特定される第1通信セッションを切断する。ただし現在日時が停止期間内の場合、クラウド側切断部479は、切断指示に含まれるセッション識別情報で特定される第1通信セッションを切断しない。クラウド側切断部479は、第1通信セッションを切断することに応じて、消去指示を接続状態関連付部481に出力する。切断指示は、切断した第1通信セッションのセッション識別情報を含む。さらに、クラウド側切断部479は、HDD404に記憶されている出力先関連付情報のうちに、同一の接続元のアドレス情報を含む複数の出力関連付情報が存在する場合、同一の接続元のアドレス情報を含む複数の出力関連付情報のうちから1つを選択し、選択されなかった1以上の出力関連付情報に含まれるセッション識別情報で特定される第1通信セッションのすべてを切断する。1つの接続元のアドレス情報で特定される装置に対して1つの第1通信セッションが存在すればジョブを送信することができるからである。これにより、ネットワーク資源を有効に利用することができる。
接続状態関連付部481は、クラウド側切断部479から消去指示が入力されることに応じて、消去指示に含まれるセッション識別情報で特定される第1通信セッションと接続元のアドレス情報との関連付を解消する。具体的には、接続状態関連付部481は、HDD404に記憶されている出力先関連付情報のうち、切断指示に含まれるセッション識別情報と同じセッション識別情報を含む出力先関連付情報を削除する。
<現在日時が停止期間の場合>
出力先指定受付部455は、停止期間の場合、ジョブIDに対応する出力先を特定することに応じて、特定した出力先のアドレス情報と、ジョブIDとを含む接続指示をセッション決定部459に出力する。出力先指定受付部455は、複数のジョブIDにそれぞれに対応する複数の出力先を特定する場合、複数のジョブIDごとに、そのジョブIDに対応する出力先のアドレス情報と、そのジョブIDとを含む接続指示をセッション決定部459に出力する。ここでは、アクセス元特定部453によって出力先にMFP100が選択され、出力先のアドレス情報が、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む場合を例に説明する。
セッション決定部459は、出力先指定受付部455から接続指示が入力されることに応じて、HDD404に記憶されている出力先関連付情報のうちから、接続元のアドレス情報が接続指示に含まれる出力先のアドレス情報と同じ出力先関連付情報を抽出し、抽出した出力先関連付情報に含まれる第1通信セッションのセッション識別情報、接続指示に含まれるジョブIDおよび出力先のアドレス情報の組をジョブ送信部461に出力する。セッション決定部459は、出力先指定受付部455から複数の接続指示が入力される場合、複数の接続指示ごとに、HDD404に記憶されている出力先関連付情報のうちから、接続元のアドレス情報が、その接続指示に含まれる出力先のアドレス情報と同じ出力先関連付情報を抽出し、抽出した出力先関連付情報に含まれる第1通信セッションのセッション識別情報、接続指示に含まれるジョブIDおよび出力先のアドレス情報の組をジョブ送信部461に出力する。
ジョブ送信部461は、セッション決定部459から第1通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報と、の組が入力され、ジョブ生成部457からジョブが入力される。ジョブ生成部457は、セッション決定部459から入力される第1通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報との組のうちからジョブ生成部457から入力されるジョブのジョブIDを含む組を特定し、特定した組に含まれるセッション識別情報を特定する。ジョブ送信部461は、通信部305を制御して、ジョブ生成部457から入力されるジョブを、特定されたセッション識別情報で特定される第1通信セッションを介して、ゲートウェイ装置200に送信する。ジョブ送信部461は、ジョブを送信することに応じて、ジョブIDとセッション識別情報との組を実行結果受信部463に出力する。
ジョブ送信部461は、ジョブ生成部457から複数のジョブが入力される場合がある。この場合、ジョブ送信部461は、セッション決定部459から第1通信セッションのセッション識別情報と、ジョブIDと、接続元のアドレス情報と、の組が複数入力される。ジョブ送信部461は、ジョブ生成部457から入力される複数のジョブごとに、そのジョブのジョブIDを含む組を複数の組のうちから特定し、特定した組に含まれるセッション識別情報を特定する。ジョブ送信部461は、通信部305を制御して、ジョブ生成部457から入力されるジョブを、そのジョブIDに対して特定されたセッション識別情報で特定される第1通信セッションを介して、ゲートウェイ装置200に送信する。ジョブ送信部461は、ジョブを送信することに応じて、そのジョブのジョブIDとセッション識別情報との組を実行結果受信部463に出力する。
ジョブ送信部461は、順次送信部465を含む。順次送信部465は、ジョブ生成部457から複数のジョブが入力される場合、複数のジョブそれぞれに対して、第1通信セッションのセッション識別情報を特定する。順次送信部465は、複数のジョブそれぞれに対してセッション識別情報を関連付ける。そして、順次送信部465は、同一のセッション識別情報が関連付けられたジョブが複数の場合、通信部405を制御して、複数のジョブを順に、それらのジョブに関連付けられたセッション識別情報で特定される第1通信セッションを介して送信する。出力先指定受付部455において受け付けられた出力先のアドレス情報で特定される装置との間では、1つの第1通信セッションしか確立されていない。このため、複数のジョブを単一の通信セッションで送信するために、複数のジョブを並列して送信するのではなく、順に送信する。
ジョブ送信部461によってゲートウェイ装置200に第1通信セッションを介して送信されるジョブは、ゲートウェイ装置200によって第1通信セッションを介して受信され、第2通信セッションを介して、MFP100に送信される。MFP100においては、ゲートウェイ装置200から受信されるジョブを実行し、実行結果をゲートウェイ装置200に送信する。ゲートウェイ装置200においては、MFP100から第2通信セッションを介して受信される実行結果を、第1通信セッションを介してクラウドサーバー400に送信する。実行結果はジョブIDを含む。
実行結果受信部463は、ジョブ送信部461からジョブIDとセッション識別情報との組が入力されることに応じて、通信部405を制御して、セッション識別情報で特定される第1通信セッションを介して実行結果を受信する。実行結果受信部463は、ジョブ送信部461から入力されるジョブIDと同じジョブIDを含む実行結果を受信することに応じて、クラウド側セッション確立部471に切断指示を出力する。
クラウド側切断部479は、現在日時が停止期間の場合は、実行結果受信部463から切断指示が入力されても、切断指示に含まれるセッション識別情報で特定される第1通信セッションを切断しない。
クラウド側切断部479は、現在日時が停止期間を経過することに応じて、第1通信セッションの全てを切断する。具体的には、クラウド側切断部479は、現在日時が停止期間を経過すると、HDD404に記憶されている出力先関連付情報を順に読出し、読み出した出力先関連付情報に含まれるセッション識別情報で特定される第1通信セッションを切断する。クラウド側切断部479は、第1通信セッションを切断することに応じて、消去指示を接続状態関連付部481に出力する。
接続状態関連付部481は、現在日時が停止期間の場合、HDD404に記憶された出力先関連付情報それぞれにおいて、出力先関連付情報に含まれるセッション識別情報で特定される第1通信セッションを介して、所定時間間隔でダミー信号を送信する。これにより、第1通信セッションを維持する。ダミー信号は、ゲートウェイ装置200を介して、第1通信セッションと組になる第2通信セッションを介して、出力先関連付情報で特定される装置、例えば、MFP100に送信されるので、ゲートウェイ装置200によって第1通信セッションが切断されることがなく、また、ゲートウェイ装置200およびMFP100によって第1通信セッションと組になる第2通信セッションが切断されることがない。
また、接続状態関連付部481は、クラウド側切断部479から消去指示が入力されることに応じて、HDD404に記憶された出力先関連付情報のうち、消去指示に含まれるセッション識別情報で特定される出力先関連付情報を消去する。
図9は、中継処理の流れの一例を示すフローチャートである。中継処理は、ゲートウェイ装置200が備えるCPU201が、ROM202、フラッシュメモリ204またはCD−ROM209Aに記憶された中継プログラムを実行することにより、CPU201により実行される処理である。図9を参照して、ゲートウェイ装置200が備えるCPU201は、第1通信部205を制御して管理サーバー300との間で常時接続セッションを確立する(ステップS01)。フラッシュメモリ204に記憶されている管理サーバー300のグローバルIPアドレスを用いて管理サーバー300に通信セッションの確立要求を送信し、管理サーバー300と所定のネゴシエーションをすることによって常時接続セッションを確立する。常時接続セッションは、特に限定するものではないが、例えば、XMPPに基づくメッセージセッションである。
次のステップS02においては、ファイアーウォールの内側のLAN3に接続された装置を検索する。LAN3にブロードキャストで問い合わせを送信し、MFP100,100A,100Bそれぞれから返信される装置識別情報を取得することによって、MFP100,100A,100Bを検索する。装置識別情報は、限定するものではないが、MFP100,100A,100Bそれぞれに対してLAN3において割り当てられたローカルIPアドレスである。
次のステップS03においては、ステップS02において検索されたMFP100,100A,100Bそれぞれの装置識別情報を、ステップS01において確立された常時接続セッションを介して管理サーバー300に送信し、処理をステップS04に進める。これにより、管理サーバー300は、ゲートウェイ装置200に接続されたMFP100,100A,100Bを認識することができる。
ステップS04においては、常時接続セッションを介して管理サーバー300から、トンネル接続要求を受信したか否かを判断する。トンネル接続要求を受信したならば、処理をステップS05に進めるが、そうでなければ処理をステップS12に進める。
ステップS05においては、トンネル接続要求から接続元のアドレス情報を抽出する。そして、接続元のアドレス情報に基づいて接続元の装置を特定する(ステップS06)。ここでは、トンネル接続要求が、接続元のアドレス情報としてMFP100のアドレス情報を含み、接続先のアドレス情報としてクラウドサーバー400のアドレス情報を含む場合を例に説明する。この場合、MFP100を接続元の装置に特定する。
次のステップS07においては、第2通信部206を制御して、接続元の装置に特定されたMFP100との間で第2通信セッションを確立する。ステップS06において、接続元の装置に特定されたMFP100に通信セッションの確立要求を送信し、MFP100との間で第2通信セッションを確立する。第2通信セッションを確立したならば、処理をステップS08に進めるが、MFP100との間で第2通信セッションを確立できなければ処理をステップS14に進める。MFP100との間で第2通信セッションを確立できない場合は、例えば、MFP100に電源が投入されていない場合、MFP100が通信できないトラブル状態の場合等である。ステップS14においては、MFP100の装置識別情報と、トンネル接続に失敗したことを示す情報とを含むトンネル接続結果を、常時接続セッションを介して管理サーバー300に送信し、処理をステップS15に進める。
ステップS08においては、MFP100のアドレス情報と、トンネル接続に成功したことを示す情報とを含むトンネル接続結果を、常時接続セッションを介して管理サーバー300に送信し、処理をステップS09に進める。
ステップS09においては、ステップS04において受信されたトンネル接続要求から接続先のアドレス情報を抽出する。ここでは、トンネル接続要求が、接続先のアドレス情報としてクラウドサーバー400のアドレス情報を含むので、クラウドサーバー400のアドレス情報を抽出する。次のステップS10においては、第1通信部205を制御して、接続先のアドレス情報を用いて、クラウドサーバー400との間で第1通信セッションを確立する。ステップS09において抽出されたクラウドサーバー400のアドレス情報で示されるアドレスにアクセスすることによって、クラウドサーバー400との間で第1通信セッションを確立する。
ステップS11においては、第1通信セッションと第2通信セッションとを用いて、クラウドサーバー400とMFP100との間の通信を中継する。例えば、クラウドサーバー400からMFP100にデータが送信される場合、クラウドサーバー400から第1通信セッションを介してデータを受信し、受信されたデータをクラウドサーバー400に代わってMFP100に第2通信セッションを介して送信する。また、MFP100から実行結果を第2通信セッションを介して受信する場合、実行結果を、クラウドサーバー400にMFP100に代わって第1通信セッションを介して送信する。実行結果は、接続元がMFP100であることを示す情報を含む。
一方、ステップS12においては、ステップS10において確立された第1通信セッションが切断されたか否かを判断する。第1通信セッションが切断されたならば処理をステップS13に進めるが、そうでなければ処理をステップS15に進める。ステップS13においては、ステップS12において切断された第1通信セッションと対になる第2通信セッションを切断し、処理をステップS15に進める。切断された第1通信セッションと対になる第2通信セッションは、ステップS11において、切断された第1通信セッションと接続された第2通信セッションである。ステップS15においては、電源がOFFになったか否かを判断する。電源がOFFになったならば処理を終了するが、そうでなければ処理をステップS04に戻す。
図10は、トンネル接続支援処理の流れの一例を示すフローチャートである。トンネル接続支援処理は、管理サーバー300が備えるCPU301が、ROM302、HDD304またはCD−ROM309Aに記憶されたプログラムを実行することにより、CPU301により実行される処理である。図10を参照して、CPU301は、常時接続セッションの確立要求を受信したか否かを判断する(ステップS301)。通信部305が、ゲートウェイ装置200から常時接続のための通信セッションの確立要求を受信したか否かを判断する。常時接続セッションの確立要求を受信したならば処理をステップS302に進めるが、そうでなければ処理をステップS304に進める。
ステップS302においては、ゲートウェイ装置200との間で常時接続セッションを確立し、処理をステップS303に進める。ステップS303においては、常時接続セッションを介して、ゲートウェイ装置200からMFPの装置識別情報を取得する。ここでは、MFP100,100A,100Bそれぞれの装置識別情報を取得する場合を例に説明する。
ステップS304においては、グローバルセッションの確立要求を受信したか否かを判断する。通信部305が、ファイアーウォールの外部に位置するクラウドサーバー400からグローバルセッションの確立要求を受信したか否かを判断する。グローバルセッションの確立要求を受信したならば処理をステップS305に進めるが、そうでなければ処理をステップS301に戻す。ステップS305においては、クラウドサーバー400との間でグローバルセッションを確立し、処理をステップS306に進める。
ステップS306においては、接続要求をクラウドサーバー400から受信したか否かを判断する。接続要求を受信するまで待機状態となり(ステップS306でNO)、接続要求を受信したならば(ステップS306でYES)、処理をステップS307に進める。
ステップS307においては、トンネル接続要求をゲートウェイ装置200にステップS301において確立された常時接続セッションを介して送信する。トンネル接続要求は、接続要求を、常時接続セッションにより定まるプロトコルに適合するようにカプセル化したパケットである。トンネル接続要求を受信するゲートウェイ装置200は、MFP100との間で第2通信セッションを確立し、その結果としてトンネル接続結果を返信する。
ステップS308においては、ゲートウェイ装置200からトンネル接続結果を常時接続セッションを介して受信したか否かを判断する。トンネル接続結果を受信するまで待機状態となり(ステップS308でNO)、トンネル接続結果を受信したならば(ステップS308でYES)、処理をステップS309に進める。トンネル接続結果は、トンネル接続に成功したことを示す情報と接続元のアドレス情報とを含むトンネル接続結果と、トンネル接続に失敗したことを示す情報と接続元のアドレス情報とを含むトンネル接続結果とを含む。
ステップS309においては、接続要求を送信してきた装置、ここではクラウドサーバー400にトンネル接続結果を通知する。具体的には、ステップS305において確立されたグローバルセッションを介して、トンネル接続結果を送信する。ステップS310においては、ステップS305において確立されたグローバルセッションを切断し、処理を終了する。
図11は、装置制御処理の流れの一例を示すフローチャートである。図11に示す装置制御処理は、アクセス元が1つの場合にCPU401により実行される処理を示しているが、アクセス元が複数の場合には、CPU401は、アクセス元の数それぞれに対して、図11に示す装置制御処理を実行する。装置制御処理は、クラウドサーバー400が備えるCPU401がサービスを提供するためのプログラムを実行することにより、そのCPU401により実行される処理である。ここでは、クラウドサーバー400が実行する処理のうち、クラウドサーバー400がMFP100に処理を実行させる処理を主に示している。図11を参照して、クラウドサーバー400が備えるCPUは、停止期間を取得する(ステップS401)。通信部405が管理サーバー300から停止期間を受信すると、その停止期間を取得する。
次のステップS402においては、アクセス元を特定したか否かを判断する。アクセス元を特定するまで待機状態となり(ステップS402でNO)、アクセス元を特定したならば(ステップS402でYES)、処理をステップS403に進める。アクセス元は、クラウドサーバーを操作するユーザーが操作するPCである。通信部405が、インターネット5またはLAN3に接続されたPCからアクセスを受け付けると、PCをアクセス元として特定する。例えば、ログイン画面をPCに送信し、そのPCから受信されるユーザー識別情報とパスワードとの組がHDD404に予め記憶されている場合に、そのPCをアクセス元として特定する。また、アクセスしてきた装置の装置識別情報がHDD404に予め記憶されている場合に、アクセスしてきた装置をアクセス元として特定する。
次のステップS403においては、出力先を特定する。アクセス元のPCを操作するユーザーにより特定される装置を出力先に特定する。具体的には、管理サーバー300から、ゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報と、を受信し、受信されたゲートウェイ装置200の装置識別情報と、MFP100,100A,100Bそれぞれの装置識別情報との組を出力先の候補として予めHDD404に記憶している。CPU401は、ゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択可能な装置選択画面を、通信部305を制御して、ステップS402で特定されたアクセス元に送信し、アクセス元のPCからゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択する操作を受信すると、選択された装置を出力先として特定する。例えば、PCを操作するユーザーが、装置選択画面に従って、ゲートウェイ装置200とMFP100とを選択する操作をPCに入力すれば、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを選択する操作を受信するので、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とで定まるMFP100を出力先として特定する。以下、MFP100が出力先に特定される場合を例に説明する。
そして、現在日時が停止期間外か否かを判断する(ステップS404)。現在日時が停止期間でなければ処理をステップS405に進めるが、現在日時が停止期間内であれば処理をステップS418に進める。ステップS405においては、出力先関連付情報がHDD404に記憶されているか否かを判断する。出力先関連付情報は、後述するステップS417においてHDD404に記憶される。出力先関連付情報がHDD404に記憶されていれば処理をステップS406に進めるが、そうでなければステップS406をスキップして、処理をステップS407に進める。ステップS406においては、HDD404に記憶されている出力先関連付情報の全てを削除し、処理をステップS407に進める。現在日時が停止期間でなければ、管理サーバー300がサービスを提供しているため、管理サーバー300を経由して出力先との間でトンネル接続すればよいからである。
ステップS407においては、ステップS403において出力先に特定された装置を管理する管理サーバー300との間でグローバルセッションを確立するための確立要求を、通信部305を制御して管理サーバー300に送信する。出力先に特定された装置を管理する装置は、出力先に特定された装置の装置識別情報を送信してきた装置であり、ここでは、管理サーバー300である。次のステップS408においては、管理サーバー300とネゴシエーションすることによって、管理サーバー300との間の通信セッションとしてグローバルセッションを確立する。なお、この場合、管理サーバー300は、管理サーバー300に登録されたユーザーであることを認証するために認証情報を要求し、認証に成功することを条件に、通信セッションであるグローバルセッションを確立するようにしてもよい。これにより、ファイアーウォールの内部のMFP100,100A,100Bに対してアクセス可能なユーザーを、管理サーバー300に登録されたユーザーに制限することができる。
次のステップS409においては、接続要求を管理サーバー300に、ステップS408において確立されたグローバルセッションを介して送信する。接続要求は、接続元のアドレス情報としてMFP100のアドレス情報と、接続先のアドレス情報としてURLを含む。URLは、クラウドサーバー400のネットワークアドレス(ドメイン名)、ウェブページの識別子、クラウドサーバー400が実行するジョブの識別子(ジョブID)、および待ち受けポートのポート番号を含む。
次のステップS410においては、通信セッションの確立要求を受信したか否かを判断する。ここでの確立要求は、ステップS409において管理サーバー300に送信した接続要求に対応する。ステップS409において管理サーバー300に送信した接続要求は、接続元のアドレス情報と接続先のアドレスとを含む。接続先のアドレス情報は、クラウドサーバー400のアドレス情報であり、URLとしている。また、確立要求は、接続要求に含まれる接続先のアドレス情報を含む。ここでは、確立要求は、クラウドサーバー400のURLへのアクセスとしている。このため、ステップS410においては、ステップS409において管理サーバー300に送信した接続要求に対応する確立要求として、ゲートウェイ装置200から受信する通信セッションの確立要求を受信する。通信セッションの確立要求を受信するまで待機状態となり(ステップS410でNO)、通信セッションの確立要求を受信したならば(ステップS410でYES)、処理をステップS411に進める。
ステップS411においては、通信セッションの確立要求に対応する第1通信セッションを確立し、処理をステップS412に進める。通信セッションの確立要求を送信してきた装置、ここではゲートウェイ装置200との間で第1通信セッションを確立する。
ステップS412においては、ジョブを第1通信セッションを介して送信する。ジョブの送信先はゲートウェイ装置200であるが、上述したように第1通信セッションを介して送信されるジョブは、ゲートウェイ装置200とMFP100との間で確立された第2通信セッションを介して、ゲートウェイ装置200によってMFP100に送信される。このため、ジョブは実際にはMFP100に送信される。
次のステップS413においては、実行結果を第1通信セッションを介して受信したか否かを判断する。実行結果を受信するまで待機状態となり(ステップS413でNO)、実行結果を受信したならば(ステップS413でYES)、処理をステップS414に進める。
ステップS414においては、現在日時が停止期間外か否かを判断する。現在日時が停止期間でなければ処理をステップS415に進めるが、現在日時が停止期間内であれば処理をステップS416に進める。ステップS415においては、ステップS411において確立した第1通信セッションを切断し、処理をステップS402に戻す。
ステップS416においては、ステップS411において確立した第1通信セッションとステップS403において出力先に特定された装置とを関連付ける。ここでは、ステップS411において確立した第1通信セッションのセッション識別情報と、ステップS403において出力先に特定された装置のアドレス情報とを含む出力先関連付情報を生成する。そして、生成された出力先関連付情報をHDD404に記憶し(ステップS417)、処理をステップS417Aに進める。
ステップS417Aにおいては、所定時間間隔で第1通信セッションを介してダミー信号を送信する設定をし、処理をステップS402に戻す。停止期間内に、第1通信セッションを介してダミー信号を所定時間間隔で送信するようにし、第1通信セッションの相手先の装置によって第1通信セッションが切断されないようにするためである。
一方、ステップS418においては、ステップS403において出力先に特定された装置に対応する出力先関連付情報がHDD404に記憶されているか否かを判断する。具体的には、HDD404に記憶されている出力先関連付情報のうちから、ステップS403において出力先に特定された装置のアドレス情報を含む出力先関連付情報を抽出できたならば処理をステップS419に進めるが、そうでなければ処理をステップS428に進める。ステップS428においては、エラーとして処理をステップS402に戻す。例えば、ステップS402においてアクセス元に特定された装置に、出力先に接続できない旨を通知するメッセージを送信する。
ステップS419においては、ステップS403において出力先に特定された装置に対応する第1通信セッションを特定する。ステップS418において抽出された出力先関連付情報に含まれるセッション識別情報で特定される第1通信セッションを特定する。
そして、ステップS419において特定された第1通信セッションを介して送信中のジョブが存在するか否かを判断する(ステップS420)。送信中のジョブが存在するならば、処理をステップS421に進めるが、そうでなければ処理をステップS422に進める。別のアクセス元に対して装置制御処理が実行される場合に、同じ第1通信セッションを介してジョブが送信される場合があるからである。ステップS421においては、処理対象のジョブを送信する順番を最後に設定し、処理をステップS423に進める。ステップS422においては、処理対象のジョブを、ステップS419において特定された第1通信セッションを介して送信し、処理をステップS423に進める。
ステップS423においては、ステップS419において特定された第1通信セッションを介して実行結果を受信したか否かを判断する。実行結果を受信するまで待機状態となり(ステップS423でNO)、実行結果を受信したならば(ステップS423でYES)、処理をステップS424に進める。
ステップS424においては、ステップS421において送信順が割り当てられたジョブの内に、未だ送信されていないジョブが存在するか否かを判断する。未送信のジョブが存在すれば、処理をステップS425に進めるが、そうでなければ処理をステップS426に進める。ステップS425においては、送信順が最も先のジョブを、ステップS419において特定された第1通信セッションを介して送信し、処理をステップS423に戻す。
ステップS426においては、現在日時が停止期間外か否かを判断する。現在日時が停止期間でなければ処理をステップS427に進めるが、現在日時が停止期間内であれば処理をステップS402に戻す。ステップS427においては、ステップS419において特定された第1通信セッションを切断し、処理をステップS402に戻す。
以上説明したように、本実施の形態におけるクラウドサーバー400は、管理サーバー300がサービスの提供をしない期間を示す停止期間を取得し、停止期間でない場合に、接続先のアドレス情報としてクラウドサーバー400のアドレス情報と、接続元のアドレス情報としてMFP100のアドレス情報とを含む接続要求を、管理サーバー300に送信し、管理サーバー300から転送される接続要求を受信するゲートウェイ装置200から接続要求に含まれる接続先のアドレス情報と同じアドレス情報を含む確立要求を受信する場合にゲートウェイ装置200との間で第1通信セッションを確立し、第1通信セッションが確立された後に、MFP100に送信したジョブが実行された結果をMFP100から取得することことに応じて、停止期間でないことを条件に第1通信セッションを切断するが、停止期間の場合には停止期間が終了した後に第1通信セッションを切断する。また、クラウドサーバー400は、停止期間にアクセス元のユーザーが特定される場合、第1通信セッションを介して、停止期間に特定されたユーザーによる操作に基づいてジョブをMFP100に送信する。このため、管理サーバー300がサービスを提供しない停止期間の間は、停止期間の前に確立した第1通信セッションを用いて、MFP100にジョブを送信することができる。換言すれば、管理サーバー300がサービスを提供しない間に、ファイアーウォールの外部のクラウドサーバー400からファイアーウォールの内部のMFP100にジョブを送信することができる。
また、クラウドサーバー400は、ファイアーウォールの外部の管理サーバー300に接続要求を送信すれば、ファイアーウォールの内部のゲートウェイ装置200との間で第1通信セッションを確立し、ゲートウェイ装置200は制御対象装置であるMFP100と第2通信セッションを確立し、第1通信セッションと第2通信セッションを用いてクラウドサーバー300とMFP100との間の通信を中継する。このため、クラウドサーバー400は、ファイアーウォールの外部の管理サーバー300に、ファイアーウォールの内部のMFP100のアドレス情報を含む接続要求を送信すれば、ファイアーウォールの内部のMFP100にジョブを送信することができる。
また、クラウドサーバー400は、管理サーバー300がサービスを提供しない停止期間に複数のユーザーが特定される場合、第1通信セッションを介して、複数のユーザーによる操作にそれぞれ基づいた複数のジョブをMFP100に順に送信するので、複数のジョブをMFP100に送信することができる。
また、クラウドサーバー400は、第1通信セッションを確立している間、第1通信セッションのセッション識別情報とMFP100,100A,100Bのうちからユーザーにより指定された出力先関連付情報をHDD404に記憶し、停止期間にユーザーが特定される場合、特定されたユーザーによりMFP100,100A,100Bのうちから指定された装置のアドレス情報と関連付けられたセッション識別情報が存在することを条件に、換言すれば、ユーザーにより指定されたアドレス情報を含む出力先関連付情報がHDD404に記憶されていることを条件に、そのセッション識別情報で特定される第1通信セッションを介して、ユーザーによる操作に基づいたジョブを送信する。このため、停止期間にMFP100,100A,100Bのうちからユーザーにより選択された制御対象装置にジョブを送信することができる。
また、クラウドサーバー400は、HDD404に記憶されている出力先関連付情報によって、1つのアドレス情報に複数のセッション識別情報が関連付けられている場合、複数のセッション識別情報のうちから選択された1つ以外のセッション識別情報で特定される第1通信セッションを切断するので、MFP100,100A,100Bそれぞれに1つの第1通信セッションでジョブを送信することができる。その結果、ネットワーク資源を有効に利用することができる。
<変形例>
上述した情報処理システム1においては、クラウドサーバー400は、管理サーバー300を経由して、ゲートウェイ装置200との間で第1通信セッションと確立し、MFP100との間でトンネル接続するようにし、そのトンネル接続が確立されている間に、管理サーバー300がサービスを提供しない状態になると、そのサービスを提供しない停止期間の間だけトンネル接続を維持するようにした。したがって、停止期間が開始される前にトンネル接続されて確立されている第1通信セッションのみが維持される。
変形例における情報処理システム1においては、ゲートウェイ装置200において、停止期間が開始する前にトンネル接続された通信履歴を記憶しておき、停止期間が開始すると、通信履歴に基づいてトンネル接続を再構築し、停止期間の間だけ再構築したトンネル接続を維持するようにしたものである。以下、変形例における情報処理システム1について、上述した情報処理システム1と異なる点を主に説明し、重複する説明は繰り返さない。
図12は、変形例における管理サーバー300が備えるCPU301の機能の一例を示す図である。図12を参照して、図6に示した機能と異なる点は、グローバル確立部353から停止期間通知部387が削除された点、サーバー側確立部351に停止期間通知部379が追加された点である。その他の機能は図6に示した機能と同じなので、ここでは説明を繰り返さない。停止期間通知部379は、管理サーバー300がサービスの提供を停止する停止期間を、ゲートウェイ装置200に通知する。停止期間通知部379は、サーバー側確立部351によってゲートウェイ装置200との間で常時接続セッションが確立された段階で、停止期間をゲートウェイ装置200に送信する。なお、停止期間通知部379は、任意のタイミングで、例えば、ゲートウェイ装置200からの要求に応じて、停止期間を送信するようにしてもよい。
図13は、変形例におけるゲートウェイ装置が備えるCPUの機能の一例を示すブロック図である。図13を参照して、図7に示した機能と異なる点は、通信履歴記憶部283が追加された点、第1通信制御部250に停止期間取得部281および第3セッション確立部285が追加された点、第2通信制御部260に第4セッション確立部287が追加された点、実績情報転送部254が実績情報転送部254Aに変更された点、である。その他の機能は、図7に示した機能と同じである。
停止期間取得部281は、管理サーバー300から停止期間を取得する。第1通信部205が管理サーバー300から停止期間を受信すると、受信された停止期間を取得する。停止期間取得部281は、取得された停止期間を、実績情報転送部254A、第3セッション確立部285および第4セッション確立部287に出力する。なお、停止期間取得部281は、常時接続セッションを介して停止期間を受信してもよいし、別のセッションを確立して停止期間を受信してもよい。
実績情報転送部254Aは、停止期間取得部281から停止期間が入力され、実績情報収集部262から実績情報が入力される。実績情報転送部254Aは、現在日時が停止期間内でない場合、実績情報収集部262から実績情報が入力されることに応じて、常時接続セッションを介して管理サーバー300に実績情報を送信する。実績情報転送部254Aは、現在日時が停止期間内の場合、実績情報収集部262から入力される実績情報を次に常時接続セッションが確立されるまでRAM203に一時記憶し、現在日時が停止期間を経過すると、次に常時接続セッションが確立されることに応じて、RAM203に一時記憶された実績情報を、常時接続セッションを介して管理サーバー300に送信する。
通信履歴記憶部283は、トンネル接続要求受信部255がトンネル接続要求を管理サーバー300から受信するごとに、トンネル接続要求に含まれる接続要求を取得する。接続要求は、接続元のアドレス情報と、接続先のアドレス情報とを含む。通信履歴記憶部283は、接続要求に基づいて通信履歴を生成し、生成された通信履歴を第3セッション確立部285および第4セッション確立部287に出力する。例えば、通信履歴記憶部283は、通信履歴をフラッシュメモリ204に記憶することにより、通信履歴を第3セッション確立部285および第4セッション確立部287に出力する。ただし、通信履歴記憶部283は、トンネル接続要求に含まれる接続元のアドレス情報と接続先のアドレス情報とが同じ通信履歴が既にフラッシュメモリ204に記憶されている場合には、その通信履歴をフラッシュメモリ204に記憶しない。通信履歴は、接続要求に含まれる接続元のアドレス情報と、接続先のアドレス情報と、を含む。ここでは、接続要求が、接続元のアドレス情報としてMFP100のアドレス情報を含み、接続先のアドレス情報としてクラウドサーバー400のアドレス情報を含む場合を例に説明する。接続要求に含まれるクラウドサーバー400のアドレス情報は、第1セッション確立部259が第1通信セッションを確立するために用いる。接続要求に含まれるMFP100のアドレス情報は、第2セッション確立部263が第2通信セッションを確立するために用いる。したがって、通信履歴は、中継部270によって、第1通信セッションと第2通信セッションを用いてクラウドサーバー400とMFP100との間の通信を中継したことを示す。
第3セッション確立部285は、停止期間取得部281から停止期間が入力され、通信履歴記憶部283から通信履歴が入力される。第3セッション確立部285は、停止期間が開始することに応じて、第1通信部205を制御して、通信履歴に含まれる接続先のアドレス情報、ここではクラウドサーバー400のアドレス情報に基づいて、クラウドサーバー400のネットワークアドレスを特定し、クラウドサーバー400に確立要求を送信し、クラウドサーバー400との間で通信セッションを確立する。以下、第3セッション確立部285がクラウドサーバー400に送信する確立要求を、再確立要求という。再確立要求は、通信履歴に含まれる接続元のアドレス情報、ここではMFP100のアドレス情報を含む。ここで、第3セッション確立部285がクラウドサーバー400との間で確立する通信セッションを第3通信セッションという。第3セッション確立部285は、第3通信セッションを確立すると、第3通信セッションを識別するためのセッション識別情報と通信履歴を識別するための履歴識別情報との組を中継部270に出力する。第3セッション確立部285は、第3通信セッションを確立した後、停止期間が終了するまで、第3通信セッションを維持し、停止期間が終了すると、第3通信セッションを切断する。具体的には、第3セッション確立部285は、現在日時が停止期間内の場合、所定時間間隔で、第3通信セッションを介してダミー信号をクラウドサーバー400に送信する。クラウドサーバー400は、ダミー信号を受信している間は、第3通信セッションを切断しないので、停止期間の間は第3通信セッションが維持される。
第3セッション確立部285は、通信履歴記憶部283から複数の通信履歴が入力される場合、停止期間が開始することに応じて、第1通信部205を制御して、複数の通信履歴ごとに、その通信履歴に含まれる接続先のアドレス情報、ここではクラウドサーバー400のアドレス情報に基づいて決定されるクラウドサーバー400のネットワークアドレスを用いて再確立要求を送信し、クラウドサーバー400との間で複数の第3通信セッションを確立し、第3通信セッションを識別するためのセッション識別情報と通信履歴を識別するための履歴識別情報との組を中継部270に出力する。第3セッション確立部285は、複数の第3通信セッションを確立した後、停止期間が終了するまで、複数の第3通信セッションを維持し、停止期間が終了すると、複数の第3通信セッションの全てを切断する。
第4セッション確立部287は、停止期間取得部281から停止期間が入力され、通信履歴記憶部283から通信履歴が入力される。第4セッション確立部287は、停止期間が開始することに応じて、第2通信部206を制御して、通信履歴に含まれる接続元のアドレス情報、ここではMFP100のアドレス情報を用いて、MFP100に通信セッションの確立要求を送信し、MFP100との間で通信セッションを確立する。ここで第4セッション確立部263がMFP100との間で確立する通信セッションを第4通信セッションという。第4通信セッションは、特に限定するものではないが、LAN3において用いられる通信プロトコルに準じた通信セッションであればよい。第4セッション確立部287は、第4通信セッションを識別するためのセッション識別情報と通信履歴の履歴識別情報との組を中継部270に出力する。第4セッション確立部287は、第4通信セッションを確立した後、停止期間が終了するまで、第4通信セッションを維持し、停止期間が終了すると、第4通信セッションを切断する。具体的には、第4セッション確立部287は、現在日時が停止期間内の場合、所定時間間隔で、第4通信セッションを介してダミー信号を、通信履歴に含まれる接続元のアドレス情報で特定される装置、ここではMFP100に送信する。MFP100は、ダミー信号を受信している間は、第4通信セッションを切断しないので、停止期間の間は第4通信セッションが維持される。
第4セッション確立部287は、通信履歴記憶部283から複数の通信履歴が入力される場合、停止期間が開始することに応じて、第2通信部206を制御して、複数の通信履歴ごとに、その通信履歴に含まれる接続元のアドレス情報を用いて、第4通信セッションを確立し、第4通信セッションを識別するためのセッション識別情報と通信履歴の履歴識別情報との組を中継部270に出力する。第4セッション確立部287は、複数の第4通信セッションを確立した後、停止期間が終了するまで、複数の第4通信セッションを維持し、停止期間が終了すると、複数の第4通信セッションのすべてを切断する。
中継部270は、第3セッション確立部285から第3通信セッションのセッション識別情報と履歴識別情報の組が入力され、第4セッション確立部263から第4通信セッションのセッション識別情報と履歴識別情報の組が入力される。中継部270は、通信履歴記憶部283によって複数の通信履歴が記憶される場合には、第3セッション確立部285から第3通信セッションのセッション識別情報と履歴識別情報の組が通信履歴の数だけ入力され、第4セッション確立部263から第4通信セッションのセッション識別情報と履歴識別情報の組が通信履歴の数だけ入力される。中継部270は、履歴識別情報が同じ第3通信セッションと第4通信セッションとを関連付ける。
例えば、第1の通信履歴が、接続先のアドレス情報としてクラウドサーバー400のアドレス情報と、接続元のアドレス情報としてMFP100のアドレス情報とを含む場合、第3セッション確立部285は第1の通信履歴に基づいてクラウドサーバー400と第3通信セッションを確立し、第4セッション確立部285は第1の通信履歴に基づいてMFP100と第4通信セッションを確立する。また、第2の通信履歴が、接続先のアドレス情報としてクラウドサーバー400のアドレス情報と、接続元のアドレス情報としてMFP100Aのアドレス情報とを含む場合、第3セッション確立部285は第2の通信履歴に基づいてクラウドサーバー400と第3通信セッションを確立し、第4セッション確立部285は第2の通信履歴に基づいてMFP100Aと第4通信セッションを確立する。
中継部270は、第1の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションと、第1の通信履歴に基づいてMFP100と確立した第4通信セッションとを用いて、クラウドサーバー400とMFP100との通信を中継する。第1の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションを介してクラウドサーバー400から受信されるデータを、第1の通信履歴に基づいてMFP100と確立した第4通信セッションを介してMFP100に送信し、第1の通信履歴に基づいてMFP100と確立した第4通信セッションを介してMFP100から受信されるデータを、第1の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションを介してクラウドサーバー400に送信する。また、中継部270は、第2の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションと、第2の通信履歴に基づいてMFP100Aと確立した第4通信セッションとを用いて、クラウドサーバー400とMFP100Aとの通信を中継する。第2の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションを介してクラウドサーバー400から受信されるデータを、第2の通信履歴に基づいてMFP100Aと確立した第4通信セッションを介してMFP100Aに送信し、第2の通信履歴に基づいてMFP100Aと確立した第4通信セッションを介してMFP100Aから受信されるデータを、第2の通信履歴に基づいてクラウドサーバー400と確立した第3通信セッションを介してクラウドサーバー400に送信する。中継部270が、クラウドサーバー400と、MFP100またはMFP100Aとの間で通信を中継することにより、クラウドサーバー400とMFP100との間、またはクラウドサーバー400とMFP100Aとの間でデータの送受信が可能となる。
図14は、変形例におけるクラウドサーバーが備えるCPUの機能の一例を示すブロック図である。図14を参照して、図8に示した機能と異なる点は、停止期間取得部451が削除された点、出力先指定受付部455、ジョブ送信部461、セッション決定部459、クラウド側セッション確立部471が、出力先指定受付部455A、ジョブ送信部461A、セッション決定部459A、クラウド側セッション確立部471Aに変更された点である。クラウド側セッション確立部471Aは、クラウド側セッション確立部471の接続情報関連付部481が接続状態関連付部481Aに変更された点、再確立部491が追加された点である。その他の機能は図8に示した機能と同じなのでここでは説明を繰り返さない。
出力先指定受付部455Aは、アクセス元特定部453からアクセス元識別情報が入力され、クラウド側セッション確立部471からグルーバルセッションのセッション識別情報が入力され、ジョブ生成部457からアクセス元識別情報とジョブIDとの組が入力される。出力先指定受付部455Aは、アクセス元識別情報で特定されるアクセス元から受信される操作に従って、出力先を特定する。出力先指定受付部455Aは、ゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択可能な装置選択画面を、通信部305を制御して、アクセス元特定部453から入力されるアクセス元識別情報で特定されるアクセス元のPCに送信する。出力先指定受付部455は、アクセス元のPCからゲートウェイ装置200と、MFP100,100A,100Bのいずれかと、を選択する操作を受信することに応じて、選択された装置を出力先として特定する。
出力先指定受付部455は、アクセス元特定部453から複数のアクセス元識別情報が入力される場合、ジョブ生成部457からアクセス元識別情報とジョブIDとの組が複数入力される。出力先指定受付部455は、複数の組ごとに、その組に含まれるアクセス元識別情報で特定されるアクセス元から受信される操作に従って、出力先を特定する。従って、出力先指定受付部455は、複数のアクセス元識別情報にそれぞれ対応する複数のジョブIDごとに、そのジョブIDに対応する出力先を特定する。
出力先指定受付部455Aは、ジョブIDに対応する出力先を特定することに応じて、特定した出力先のアドレス情報と、ジョブIDとを含む接続指示をクラウド側セッション確立部471およびセッション決定部459Aに出力する。出力先指定受付部455Aは、複数のジョブIDにそれぞれに対応する複数の出力先を特定する場合、複数のジョブIDごとに、そのジョブIDに対応する出力先のアドレス情報と、そのジョブIDとを含む接続指示をクラウド側セッション確立部471およびセッション決定部459Aに出力する。ここでは、アクセス元特定部453によって出力先にMFP100が選択され、出力先のアドレス情報が、ゲートウェイ装置200の装置識別情報とMFP100の装置識別情報とを含む場合を例に主に説明する。
再確立部491は、通信部305を制御して、再確立要求を受信することに応じて、再確立要求を送信してきた装置との間で、通信セッションを確立する。再確立部491が受信する再確立要求は、送信先のアドレス情報を含むのに対して、確立要求受信部477が受信する確立要求は送信先のアドレス情報を含まない点で異なる。また、確立要求受信部477が、接続要求部475から接続先のアドレス情報および接続元のアドレス情報が入力された後に、確立要求を受信することに応じて、確立要求を送信してきた装置との間で、通信セッションを確立する。これに対して、再確立部491は、接続要求部475から接続先のアドレス情報および接続元のアドレス情報が入力されることなく、換言すれば、接続要求部475が管理サーバー300にトンネル接続を要求しない場合に、再確立要求を受信することに応じて、再確立要求を送信してきた装置との間で、通信セッションを確立する点で異なる。再確立要求は、接続要求に含まれる接続元のアドレス情報を含む。ここでは、再確立要求がゲートウェイ装置200から送信される場合、再確立部491は、ゲートウェイ装置200との間で通信セッションを確立する。ここで、ゲートウェイ装置200との間で確立される通信セッションは第3通信セッションである。再確立部491は、ゲートウェイ装置200との間で確立された第3通信セッションのセッション識別情報と、再確立要求に含まれる接続元のアドレス情報との組を、接続状態関連付部481Aに出力する。
再確立部491は、複数の再確立要求を受信する場合、複数の再確立要求ごとに、その再確立要求を送信してきた装置との間で、第3の通信セッションを確立する。再確立部491は、複数の再確立要求にそれぞれ対応する複数の第3通信セッションを確立する場合、複数の再確立要求ごとに、その再確立要求に対応して確立した第3通信セッションのセッション識別情報と、その再確立要求に含まれる接続元のアドレス情報との組を、接続状態関連付部481Aに出力する。
接続状態関連付部481Aは、再確立部491から第3通信セッションのセッション識別情報と、接続元のアドレス情報との組が入力されることに応じて、第3通信セッションのセッション識別情報と、接続元のアドレス情報とを関連付け、第3通信セッションのセッション識別情報と、接続元のアドレス情報との組をセッション決定部459Aに出力する。具体的には、接続状態関連付部481Aは、第3通信セッションのセッション識別情報と、接続元のアドレス情報とを含む出力先関連付情報をHDD404に記憶する。接続状態関連付部481Aは、再確立部491から第3通信セッションのセッション識別情報と、接続元のアドレス情報との組が複数入力される場合、複数の組それぞれに対応する出力先関連付情報をHDD404に記憶する。
セッション決定部459Aは、出力先指定受付部455から接続指示が入力されることに応じて、HDD404に記憶されている1以上の出力先関連付情報のうちから、接続元のアドレス情報が接続指示に含まれる出力先のアドレス情報と同じ出力先関連付情報を抽出し、抽出した出力先関連付情報に含まれる第3通信セッションのセッション識別情報、接続指示に含まれる出力先のアドレス情報およびジョブIDの組をジョブ送信部461Aに出力する。セッション決定部459は、出力先指定受付部455から複数の接続指示が入力される場合、複数の接続指示ごとに、HDD404に記憶されている出力先関連付情報のうちから、接続元のアドレス情報が、その接続指示に含まれる出力先のアドレス情報と同じ出力先関連付情報を抽出し、抽出した出力先関連付情報に含まれる第3通信セッションのセッション識別情報、その接続指示に含まれる出力先のアドレス情報およびジョブIDの組をジョブ送信部461に出力する。
ジョブ送信部461Aは、セッション決定部459Aから第3通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報と、の組が入力されることなく、確立要求受信部477から第1通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報と、の組が入力される場合、確立要求受信部477から入力される第1通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報との組のうちからジョブ生成部457から入力されるジョブのジョブIDを含む組を特定し、特定した組に含まれるセッション識別情報を特定する。ジョブ送信部461は、通信部305を制御して、ジョブ生成部457から入力されるジョブを、特定されたセッション識別情報で特定される第1通信セッションを介して、ゲートウェイ装置200に送信する。ジョブ送信部461は、ジョブを送信することに応じて、ジョブIDとセッション識別情報との組を実行結果受信部463に出力する。
ジョブ送信部461Aは、停止期間送信部465Aを含む。停止期間送信部465Aは、セッション決定部459Aから第3通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報と、の組が入力される場合、セッション決定部459から入力される第3通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報との組のうちからジョブ生成部457から入力されるジョブのジョブIDを含む組を特定し、特定した組に含まれるセッション識別情報を特定する。停止期間送信部465Aは、通信部305を制御して、ジョブ生成部457から入力されるジョブを、特定されたセッション識別情報で特定される第3通信セッションを介して、ゲートウェイ装置200に送信する。停止期間送信部465Aは、ジョブを送信することに応じて、ジョブIDとセッション識別情報との組を実行結果受信部463に出力することなく、第3通信セッションを介して実行結果を受信する。
停止期間送信部465Aは、セッション決定部459Aから第3通信セッションのセッション識別情報と、ジョブIDと、出力先のアドレス情報と、の組が1以上入力された後に、ジョブ生成部457から複数のジョブが入力される場合がある。停止期間送信部465Aは、ジョブ生成部457から複数のジョブが入力される場合、複数のジョブそれぞれに対して、第3通信セッションのセッション識別情報を特定する。停止期間送信部465Aは、複数のジョブそれぞれに対してセッション識別情報を関連付ける。そして、停止期間送信部465Aは、同一のセッション識別情報が関連付けられたジョブが複数の場合、通信部405を制御して、複数のジョブを順に、それらのジョブに関連付けられたセッション識別情報で特定される第3通信セッションを介して送信する。出力先指定受付部455において受け付けられた出力先の装置識別情報で特定される装置との間では、1つの第3通信セッションしか確立されていない。このため、複数のジョブを単一の通信セッションで送信するために、複数のジョブを並列して送信するのではなく、順に送信する。
停止期間送信部465Aによってゲートウェイ装置200に第3通信セッションを介して送信されるジョブは、ゲートウェイ装置200によって第3通信セッションを介して受信され、第4通信セッションを介して、MFP100に送信される。MFP100においては、ゲートウェイ装置200から受信されるジョブを実行し、実行結果をゲートウェイ装置200に送信する。ゲートウェイ装置200においては、MFP100から第4通信セッションを介して受信される実行結果を、第3通信セッションを介してクラウドサーバー400に送信する。
図15は、変形例における中継処理の流れの一例を示すフローチャートである。変形例における中継処理は、ゲートウェイ装置200が備えるCPU201が、ROM202、フラッシュメモリ204またはCD−ROM209Aに記憶された変形例における中継プログラムを実行することにより、CPU201により実行される処理である。図15を参照して、図9に示した中継処理と異なる点は、ステップS01とステップS02との間にステップS01Aが追加された点、ステップS03とステップS04との間にステップS03Aが追加された点、ステップS11とステップS15との間にステップS11Aが追加された点、ステップS20が追加された点である。その他の処理は、図9に示した中継処理と同じなのでここでは説明を繰り返さない。
図15を参照して、ステップS01Aにおいては、停止期間を取得する。第1通信部205が管理サーバー300から停止期間を受信すると、その停止期間を取得する。ステップS03Aにおいては、停止期間が開始したか否かを判断する。現在の日時がステップS01Aにおいて取得された停止期間の開始日時ならば停止期間が開始したと判断する。停止期間が開始したならば処理をステップS20に進めるが、そうでなければ処理をステップS04に進める。
ステップS20においては、停止期間中継処理を実行し、処理をステップS15に進める。ステップS11Aにおいては、通信履歴を記憶する。通信履歴は、ステップS04において受信されたトンネル接続要求に含まれる接続要求に含まれる接続元のアドレス情報と接続先のアドレス情報とを含む。ただし、接続要求に含まれる接続元のアドレス情報と接続先のアドレス情報と同じ接続元のアドレス情報と接続先のアドレス情報とを含む通信履歴が既に記憶されている場合には、通信履歴を記憶することなく、処理をステップS15に進める。
図16は、停止期間中継処理の流れの一例を示すフローチャートである。停止期間中継処理は、図15のステップS20において実行される処理である。ステップS20において停止期間中継処理が実行される前の段階で、フラッシュメモリ204に通信履歴が記憶されている。図16を参照して、CPU201は、フラッシュメモリ204に記憶されている通信履歴のうちから1つを処理対象に選択する(ステップS21)。そして、選択された通信履歴に基づいて第3通信セッションおよび第4通信セッションが確立されているか否かを判断する(ステップS22)。具体的には、選択された通信履歴に含まれる接続先のアドレス情報と同じアドレス情報を用いて後述するステップS24において第3通信セッションが確立されており、かつ、選択された通信履歴に含まれる接続元のアドレス情報と同じアドレス情報を用いて後述するステップS25において第4通信セッションが確立されているか否かを判断する。そのような第3通信セッションおよび第4通信セッションが確立されていれば処理をステップS27に進めるが、そのような第3通信セッションおよび第4通信セッションが確立されていなければ処理をステップS23に進める。
ステップS23においては、履歴情報に含まれる接続先のアドレス情報に基づいて再確立要求を送信する。接続先のアドレス情報がクラウドサーバー400のアドレス情報であれば、クラウドサーバー400のアドレス情報からクラウドサーバー400のネットワークアドレスを決定し、第1通信部205を制御して、クラウドサーバー400に再確立要求を送信する。再確立要求は、ステップS21において選択された通信履歴に含まれる接続元のアドレス情報を含む。
次のステップS24においては、再確立要求を送信した装置、ここではクラウドサーバー400との間で第3通信セッションを確立し、処理をステップS25に進める。ステップS25においては、履歴情報に含まれる接続元のアドレス情報に基づいて確立要求を送信し、確立要求を送信した装置との間で第4通信セッションを確立する。接続元のアドレス情報がMFP100のアドレス情報であれば、第2通信部206を制御して、MFP100との間で第4通信セッションを確立する。また、接続元のアドレス情報がMFP100Aのアドレス情報であれば、第2通信部206を制御して、MFP100Aとの間で第4通信セッションを確立する。
ステップS26においては、第3通信セッションと第4通信セッションとを接続する。具体的には、第3通信セッションと第4通信セッションとを用いて、接続元のアドレス情報で特定される装置と接続先のアドレス情報で特定される装置との間の通信を中継する。例えば、ステップS24において確立された第3通信セッションがクラウドサーバー400との間で確立され、ステップS25において確立された第4通信セッションがMFP100との間で確立された場合、クラウドサーバー400から第3通信セッションを介してデータを受信し、受信されたデータをクラウドサーバー400に代わってMFP100に第4通信セッションを介して送信する。また、MFP100から実行結果を第4通信セッションを介して受信する場合、実行結果を、クラウドサーバー400にMFP100に代わって第3通信セッションを介して送信する。実行結果は、MFP100のネットワークアドレスを含む。また、ステップS24において確立された第3通信セッションがクラウドサーバー400との間で確立され、ステップS25において確立された第4通信セッションがMFP100Aとの間で確立された場合、クラウドサーバー400から第3通信セッションを介してデータを受信し、受信されたデータをクラウドサーバー400に代わってMFP100Aに第4通信セッションを介して送信する。また、MFP100Aから実行結果を第4通信セッションを介して受信する場合、実行結果を、クラウドサーバー400にMFP100Aに代わって第3通信セッションを介して送信する。実行結果は、MFP100Aのネットワークアドレスを含む。
ステップS27においては、フラッシュメモリ204に記憶された通信履歴の内に処理対象に選択されていない通信履歴が存在するか否かを判断する。未処理の通信履歴が存在するならば処理をステップS21に戻し、そのような通信履歴が存在しなければ処理をステップS27Aに進める。ステップS27Aにおいては、ダミー信号を送信し、処理をステップS28に進める。ステップS24において確立された第3通信セッションおよびステップS25において確立された第4通信セッションそれぞれを介して、ダミー信号を送信する。第3通信セッションおよび第4通信セッションそれぞれの相手先の装置によって第3通信セッションおよび第4通信セッションが切断されないようにするためである。複数の第3通信セッションが確立されている場合には、複数の第3通信セッションのすべてにダミー信号を送信し、複数の第4通信セッションが確立されている場合には、複数の第4通信セッションのすべてにダミー信号を送信する。
ステップS28においては、停止期間が終了したか否かを判断する。停止期間が終了したならば処理をステップS29に進めるが、停止期間が終了していなければ処理をステップS27Aに戻す。ステップS29においては、ステップS24において確立した第3通信セッションを切断する。複数の第3通信セッションが確立されている場合には、複数の第3通信セッションの全てを切断する。ステップS30においては、ステップS25において確立した第4通信セッションを切断し、処理を中継処理に戻す。複数の第4通信セッションが確立されている場合には、複数の第4通信セッションの全てを切断する。
図17は、変形例における装置制御処理の流れの一例を示すフローチャートである。図17に示す装置制御処理は、アクセス元が1つの場合にCPU401により実行される処理を示しているが、アクセス元が複数の場合には、CPU401は、アクセス元の数それぞれに対して、図17に示す装置制御処理を実行する。図17を参照して、CPU401は、アクセス元を特定したか否かを判断する(ステップS431)。アクセス元を特定したならば(ステップS431でYES)、処理をステップS432に進めるが、そうでなければ処理をステップS441に進める。次のステップS432においては、出力先を特定する。アクセス元のPCを操作するユーザーにより特定される装置を出力先に特定する。以下、MFP100が出力先に特定される場合を例に説明する。
そして、ステップS432において出力先に特定された装置を管理する管理サーバー300との間でグローバルセッションを確立するための確立要求を、通信部305を制御して管理サーバー300に送信する(ステップS433)。出力先に特定された装置を管理する装置は、出力先に特定された装置の装置識別情報を送信してきた装置であり、ここでは、管理サーバー300である。次のステップS434においては、管理サーバー300との間の通信セッションとしてグローバルセッションを確立したか否かを判断する。グローバルセッションを確立したならば処理をステップS435に進めるが、そうでなければ処理をステップS447に進める。グローバルセッションを確立できない場合は、例えば、管理サーバー300がサービスの提供を停止している停止期間の場合である。
次のステップS435においては、接続要求を管理サーバー300に、ステップS433において確立されたグローバルセッションを介して送信する。ここでは、接続要求は、接続元のアドレス情報としてMFP100のアドレス情報と、接続先のアドレス情報としてクラウドサーバー400のアドレス情報を含む場合を例に説明する。クラウドサーバー400のアドレス情報は、URLであり、クラウドサーバー400のネットワークアドレス(ドメイン名)、ウェブページの識別子、クラウドサーバー400が実行するジョブの識別子(ジョブID)、および待ち受けポートのポート番号を含む。
次のステップS436においては、通信セッションの確立要求を受信したか否かを判断する。ここでの確立要求は、ステップS435において管理サーバー300に送信した接続要求に対応する。ステップS435において管理サーバー300に送信した接続要求は、接続先のアドレス情報としてクラウドサーバー400のアドレス情報を含む。ここでは、確立要求は、クラウドサーバー400のアドレス情報をURLとしているので、そのURLへのアクセスである。このため、ステップS436においては、ステップS435において管理サーバー300に送信した接続要求に対応する確立要求として、ゲートウェイ装置200から受信する通信セッションの確立要求を受信する。通信セッションの確立要求を受信するまで待機状態となり(ステップS436でNO)、通信セッションの確立要求を受信したならば(ステップS436でYES)、処理をステップS437に進める。
ステップS437においては、通信セッションの確立要求に対応する第1通信セッションを確立し、処理をステップS438に進める。通信セッションの確立要求を送信してきた装置、ここではゲートウェイ装置200との間で第1通信セッションを確立する。
ステップS438においては、ジョブを第1通信セッションを介して送信する。ジョブの送信先はゲートウェイ装置200であるが、上述したように第1通信セッションを介して送信されるジョブは、ゲートウェイ装置200とMFP100との間で確立された第2通信セッションを介して、ゲートウェイ装置200によってMFP100に送信される。このため、ジョブは実際にはMFP100に送信される。
次のステップS439においては、実行結果を第1通信セッションを介して受信したか否かを判断する。実行結果を受信するまで待機状態となり(ステップS439でNO)、実行結果を受信したならば(ステップS439でYES)、処理をステップS440に進める。ステップS440においては、ステップS437において確立した第1通信セッションを切断し、処理をステップS431に戻す。
ステップS441においては、通信部405がゲートウェイ装置200から再確立要求を受信したか否かを判断する。再確立要求を受信したならば処理をステップS442に進めるが、そうでなければ処理をステップS445に進める。ステップS442においては、再確立要求を送信してきたゲートウェイ装置200との間で第3通信セッションを確立する。そして、第3通信セッションと出力先とを関連付ける(ステップS443)。出力先は、再確立要求に含まれる接続元のアドレス情報で特定される装置である。具体的には、第3通信セッションのセッション識別情報と接続元のアドレス情報とを含む出力先関連付情報を生成する。そして、出力先関連付情報をHDD404に記憶し(ステップS444)、処理をステップS431に戻す。
一方、ステップS445においては、ステップS442において確立された第3通信セッションが切断されたか否かを判断する。ゲートウェイ装置200が第3通信セッションを切断する場合がある。第3通信セッションが切断されたならば処理をステップS446に進めるが、そうでなければ処理をステップS431に戻す。ステップS446においては、HDD404に記憶された出力先関連付情報のうち切断された第3通信セッションのセッション識別情報と含む出力先関連付情報をHDD404から削除し、処理をステップS431に戻す。
処理がステップS447に進む場合、ステップS434において、管理サーバー300との間でグローバルセッションが確立できない場合である。換言すれば、現在日時が、管理サーバー300においてサービスが提供されない停止期間内の場合である。ステップS447においては、ステップS432において特定される出力先に対応する出力先関連付情報が存在するか否かを判断する。HDD404に含まれる出力先関連付情報のうちから、ステップS432において特定される出力先の装置のアドレス情報と同じアドレス情報を含む出力先関連付情報を抽出し、そのような出力先関連付情報が抽出できたならば、処理をステップS448に進めるが、そうでなければ処理をステップS453に進める。ステップS453においては、エラーとして処理をステップS431に戻す。例えば、ステップS431においてアクセス元に特定された装置である出力先に接続できない旨を通知するメッセージを送信する。
ステップS448においては、第3通信セッションを特定する。ステップS447において抽出された出力先関連付情報に含まれるセッション識別情報で識別される第3通信セッションを特定する。そして、ステップS448において特定された第3通信セッションを介して送信中のジョブが存在するか否かを判断する(ステップS449)。送信中のジョブが存在するならば、処理をステップS450に進めるが、そうでなければ処理をステップS454に進める。別のアクセス元に対して装置制御処理が実行される場合に、同じ第3通信セッションを介してジョブが送信される場合があるからである。ステップS450においては、処理対象のジョブを送信する順番を最後に設定し、処理をステップS451に進める。ステップS454においては、処理対象のジョブを、ステップS448において特定された第3通信セッションを介して送信し、処理をステップS451に進める。
ステップS451においては、ステップS448において特定された第3通信セッションを介して実行結果を受信したか否かを判断する。実行結果を受信するまで待機状態となり(ステップS451でNO)、実行結果を受信したならば(ステップS451でYES)、処理をステップS452に進める。
ステップS452においては、ステップS449において送信順が割り当てられたジョブの内に、未だ送信されていないジョブが存在するか否かを判断する。未送信のジョブが存在すれば、処理をステップS455に進めるが、そうでなければ処理をステップS431に戻す。ステップS455においては、送信順が最も先のジョブを、ステップS448において特定された第3通信セッションを介して送信し、処理をステップS451に戻す。
以上説明したように変形例におけるゲートウェイ装置200は、管理サーバー300がサービスの提供をしない期間を示す停止期間を取得し、接続要求を管理サーバー300から受信することに応じて、クラウドサーバー400との間で第1通信セッションを確立し、接続要求に含まれる接続元のアドレス情報および接続先のアドレス情報を含む通信履歴を記憶し、停止期間が開始することに応じて、通信履歴に含まれる接続元のアドレス情報を含む再確立要求をクラウドサーバー400に送信し、クラウドサーバー400との間で第3通信セッションを確立し、停止期間が開始することに応じて、MFP100,100A,100Bのうち通信履歴に含まれる接続元のアドレス情報で特定される装置、例えば、MFP100との間で第4通信セッションを確立し、第3通信セッションが確立されている間、第3通信セッションと第4通信セッションとを用いて、クラウドサーバー400とMFP100との間の通信を中継する。一方、クラウドサーバー300は、ゲートウェイ装置200から再確立要求が受信されることに応じて、ゲートウェイ装置200との間で第3通信セッションを確立し、第3通信セッションが確立されている場合、第3通信セッションを介して、ジョブをMFP100に送信する。このため、管理サーバー300がサービスを提供しない間に、ファイアーウォールの外部のクラウドサーバー400からファイアーウォールの内部のMFP100,100A,100Bにジョブを送信することができる。
また、変形例におけるクラウドサーバー400は、第3通信セッションが確立されている間に複数のユーザーが特定される場合、第3通信セッションを介して、複数のユーザーによる操作にそれぞれ基づいた複数のジョブをMFP100,100A,100Bのうちユーザーにより指定された装置、例えばMFP100に順に送信するので、複数のジョブをMFP100に送信することができる。
また、変形例におけるゲートウェイ装置200は、第3通信セッションを確立すると、第3通信セッションのセッション識別情報と、MFP100,100A,100Bのうちユーザーにより指定された装置、例えばMFP100のアドレス情報とを関連付けた出力先関連付情報をHDD404に記憶し、第3通信セッションが確立されている間にアクセス元のユーザーが特定される場合、特定されたユーザーにより指定されたMFP100のアドレス情報と関連付けられたセッション識別情報が存在することを条件に、そのセッション識別情報で特定される第3通信セッションを介して、ユーザーによる操作に基づいたジョブを送信する。このため、MFP100,100A,100Bのうちからユーザーにより選択された装置にジョブを送信することができる。
また、変形例におけるゲートウェイ装置200は、接続要求に含まれる接続元のアドレス情報および接続先のアドレス情報を含む通信履歴をHDD404に記憶するが、接続元のアドレス情報と接続先のアドレス情報とが同じ複数の通信履歴が存在する場合、複数の通信履歴に対して1つの再確立要求を送信する。このため、1つの接続元のアドレス情報で特定される装置、例えばMFP100と1つの接続先のアドレス情報で特定されるクラウドサーバー400との間で1つの第3通信セッションが確立されるので、クラウドサーバー400を、MFP100,100A,100Bそれぞれと、1つの第3通信セッションで接続することができる。その結果、ネットワーク資源を有効に利用することができる。
なお、上述した実施の形態においては、情報処理システム1について説明したが、図9に示した中継処理をゲートウェイ装置200に実行させ、図10に示したトンネル接続支援処理を管理サーバー300に実行させ、図11に示した装置制御処理をクラウドサーバー400に実行させる装置制御方法、または、図11に示した装置制御処理をクラウドサーバー400を制御するCPU401に実行させる装置制御プログラムとして捉えることができるのは言うまでもない。また、図15に示した中継処理をゲートウェイ装置200に実行させ、図16に示したトンネル接続支援処理を管理サーバー300に実行させ、図17に示した装置制御処理をクラウドサーバー400に実行させる装置制御方法、または、図15および図16に示した中継処理をゲートウェイ装置200を制御するCPU201に実行させる中継プログラムおよび図17に示した装置制御処理をクラウドサーバー400を制御するCPU401に実行させる装置制御プログラムとして捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。